refactor(debug): vastly improve debug messages for framing

This commit is contained in:
Matt Broadstone 2016-03-04 12:52:36 -05:00
parent e9af40515b
commit f6c43d9196
4 changed files with 110 additions and 65 deletions

View File

@ -54,8 +54,6 @@ bool QAmqpChannelPrivate::_q_method(const QAmqpMethodFrame &frame)
if (frame.methodClass() != QAmqpFrame::Channel) if (frame.methodClass() != QAmqpFrame::Channel)
return false; return false;
qAmqpDebug("Channel#%d:", channelNumber);
switch (frame.id()) { switch (frame.id()) {
case miOpenOk: case miOpenOk:
openOk(frame); openOk(frame);
@ -94,6 +92,7 @@ void QAmqpChannelPrivate::sendFrame(const QAmqpFrame &frame)
void QAmqpChannelPrivate::resetInternalState() void QAmqpChannelPrivate::resetInternalState()
{ {
if (!opened) return;
opened = false; opened = false;
needOpen = true; needOpen = true;
} }
@ -106,7 +105,7 @@ void QAmqpChannelPrivate::open()
if (!client->isConnected()) if (!client->isConnected())
return; return;
qAmqpDebug("Open channel #%d", channelNumber); qAmqpDebug("<- channel#open( channel=%d )", channelNumber);
QAmqpMethodFrame frame(QAmqpFrame::Channel, miOpen); QAmqpMethodFrame frame(QAmqpFrame::Channel, miOpen);
frame.setChannel(channelNumber); frame.setChannel(channelNumber);
@ -136,17 +135,19 @@ void QAmqpChannelPrivate::flow(bool active)
void QAmqpChannelPrivate::flow(const QAmqpMethodFrame &frame) void QAmqpChannelPrivate::flow(const QAmqpMethodFrame &frame)
{ {
Q_UNUSED(frame); Q_UNUSED(frame);
qAmqpDebug() << Q_FUNC_INFO; qAmqpDebug("-> channel#flow( channel=%d )", channelNumber);
} }
void QAmqpChannelPrivate::flowOk() void QAmqpChannelPrivate::flowOk()
{ {
qAmqpDebug() << Q_FUNC_INFO; qAmqpDebug("<- channel#flowOk( channel=%d )", channelNumber);
} }
void QAmqpChannelPrivate::flowOk(const QAmqpMethodFrame &frame) void QAmqpChannelPrivate::flowOk(const QAmqpMethodFrame &frame)
{ {
Q_Q(QAmqpChannel); Q_Q(QAmqpChannel);
qAmqpDebug("-> channel#flowOk( channel=%d )", channelNumber);
QByteArray data = frame.arguments(); QByteArray data = frame.arguments();
QDataStream stream(&data, QIODevice::ReadOnly); QDataStream stream(&data, QIODevice::ReadOnly);
bool active = QAmqpFrame::readAmqpField(stream, QAmqpMetaType::Boolean).toBool(); bool active = QAmqpFrame::readAmqpField(stream, QAmqpMetaType::Boolean).toBool();
@ -158,6 +159,9 @@ void QAmqpChannelPrivate::flowOk(const QAmqpMethodFrame &frame)
void QAmqpChannelPrivate::close(int code, const QString &text, int classId, int methodId) void QAmqpChannelPrivate::close(int code, const QString &text, int classId, int methodId)
{ {
qAmqpDebug("<- channel#close( channel=%d, reply-code=%d, text=%s class-id=%d, method-id:%d, )",
channelNumber, code, qPrintable(text), classId, methodId);
QByteArray arguments; QByteArray arguments;
QDataStream stream(&arguments, QIODevice::WriteOnly); QDataStream stream(&arguments, QIODevice::WriteOnly);
@ -181,7 +185,6 @@ void QAmqpChannelPrivate::close(int code, const QString &text, int classId, int
void QAmqpChannelPrivate::close(const QAmqpMethodFrame &frame) void QAmqpChannelPrivate::close(const QAmqpMethodFrame &frame)
{ {
Q_Q(QAmqpChannel); Q_Q(QAmqpChannel);
qAmqpDebug(">> CLOSE");
QByteArray data = frame.arguments(); QByteArray data = frame.arguments();
QDataStream stream(&data, QIODevice::ReadOnly); QDataStream stream(&data, QIODevice::ReadOnly);
qint16 code = 0, classId, methodId; qint16 code = 0, classId, methodId;
@ -199,11 +202,8 @@ void QAmqpChannelPrivate::close(const QAmqpMethodFrame &frame)
Q_EMIT q->error(error); Q_EMIT q->error(error);
} }
qAmqpDebug(">> code: %d", code); qAmqpDebug("-> channel#close( channel=%d, reply-code=%d, reply-text=%s, class-id=%d, method-id=%d, )",
qAmqpDebug(">> text: %s", qPrintable(text)); channelNumber, code, qPrintable(text), classId, methodId);
qAmqpDebug(">> class-id: %d", classId);
qAmqpDebug(">> method-id: %d", methodId);
Q_EMIT q->closed();
// complete handshake // complete handshake
QAmqpMethodFrame closeOkFrame(QAmqpFrame::Channel, miCloseOk); QAmqpMethodFrame closeOkFrame(QAmqpFrame::Channel, miCloseOk);
@ -216,6 +216,7 @@ void QAmqpChannelPrivate::close(const QAmqpMethodFrame &frame)
void QAmqpChannelPrivate::closeOk(const QAmqpMethodFrame &) void QAmqpChannelPrivate::closeOk(const QAmqpMethodFrame &)
{ {
qAmqpDebug("-> channel#closeOk( channel=%d )", channelNumber);
notifyClosed(); notifyClosed();
} }
@ -230,7 +231,7 @@ void QAmqpChannelPrivate::notifyClosed()
void QAmqpChannelPrivate::openOk(const QAmqpMethodFrame &) void QAmqpChannelPrivate::openOk(const QAmqpMethodFrame &)
{ {
Q_Q(QAmqpChannel); Q_Q(QAmqpChannel);
qAmqpDebug(">> OpenOK"); qAmqpDebug("-> channel#openOk( channel=%d )", channelNumber);
opened = true; opened = true;
Q_EMIT q->opened(); Q_EMIT q->opened();
q->channelOpened(); q->channelOpened();
@ -246,6 +247,7 @@ void QAmqpChannelPrivate::qosOk(const QAmqpMethodFrame &frame)
{ {
Q_Q(QAmqpChannel); Q_Q(QAmqpChannel);
Q_UNUSED(frame) Q_UNUSED(frame)
qAmqpDebug("-> basic#qosOk( channel=%d )", channelNumber);
prefetchCount = requestedPrefetchCount; prefetchCount = requestedPrefetchCount;
prefetchSize = requestedPrefetchSize; prefetchSize = requestedPrefetchSize;
@ -320,6 +322,9 @@ void QAmqpChannel::qos(qint16 prefetchCount, qint32 prefetchSize)
stream << qint16(prefetchCount); stream << qint16(prefetchCount);
stream << qint8(0x0); // global stream << qint8(0x0); // global
qAmqpDebug("<- basic#qos( channel=%d, prefetch-size=%d, prefetch-count=%d, global=%d )",
d->channelNumber, prefetchSize, prefetchCount, 0);
frame.setArguments(arguments); frame.setArguments(arguments);
d->sendFrame(frame); d->sendFrame(frame);
} }

View File

@ -171,11 +171,10 @@ void QAmqpClientPrivate::_q_socketDisconnected()
Q_Q(QAmqpClient); Q_Q(QAmqpClient);
buffer.clear(); buffer.clear();
resetChannelState(); resetChannelState();
if (connected) { if (connected)
connected = false; connected = false;
Q_EMIT q->disconnected(); Q_EMIT q->disconnected();
} }
}
void QAmqpClientPrivate::_q_heartbeat() void QAmqpClientPrivate::_q_heartbeat()
{ {
@ -336,7 +335,6 @@ bool QAmqpClientPrivate::_q_method(const QAmqpMethodFrame &frame)
if (frame.methodClass() != QAmqpFrame::Connection) if (frame.methodClass() != QAmqpFrame::Connection)
return false; return false;
qAmqpDebug() << "Connection:";
if (closed) { if (closed) {
if (frame.id() == QAmqpClientPrivate::miCloseOk) if (frame.id() == QAmqpClientPrivate::miCloseOk)
closeOk(frame); closeOk(frame);
@ -372,7 +370,6 @@ bool QAmqpClientPrivate::_q_method(const QAmqpMethodFrame &frame)
void QAmqpClientPrivate::start(const QAmqpMethodFrame &frame) void QAmqpClientPrivate::start(const QAmqpMethodFrame &frame)
{ {
Q_Q(QAmqpClient); Q_Q(QAmqpClient);
qAmqpDebug(">> Start");
QByteArray data = frame.arguments(); QByteArray data = frame.arguments();
QDataStream stream(&data, QIODevice::ReadOnly); QDataStream stream(&data, QIODevice::ReadOnly);
@ -387,18 +384,11 @@ void QAmqpClientPrivate::start(const QAmqpMethodFrame &frame)
QAmqpFrame::readAmqpField(stream, QAmqpMetaType::LongString).toString().split(' '); QAmqpFrame::readAmqpField(stream, QAmqpMetaType::LongString).toString().split(' ');
QString locales = QAmqpFrame::readAmqpField(stream, QAmqpMetaType::LongString).toString(); QString locales = QAmqpFrame::readAmqpField(stream, QAmqpMetaType::LongString).toString();
qAmqpDebug(">> version_major: %d", version_major); qAmqpDebug("-> connection#start( version_major=%d, version_minor=%d, mechanisms=(%s), locales=%s",
qAmqpDebug(">> version_minor: %d", version_minor); version_major, version_minor, qPrintable(mechanisms.join(',')), qPrintable(locales));
// NOTE: replace with qDebug overload
// QAmqpFrame::print(table);
qAmqpDebug() << ">> mechanisms: " << mechanisms;
qAmqpDebug(">> locales: %s", qPrintable(locales));
if (!mechanisms.contains(authenticator->type())) { if (!mechanisms.contains(authenticator->type())) {
socket->disconnectFromHost(); socket->disconnectFromHost();
Q_EMIT q->disconnected();
return; return;
} }
@ -408,12 +398,11 @@ void QAmqpClientPrivate::start(const QAmqpMethodFrame &frame)
void QAmqpClientPrivate::secure(const QAmqpMethodFrame &frame) void QAmqpClientPrivate::secure(const QAmqpMethodFrame &frame)
{ {
Q_UNUSED(frame) Q_UNUSED(frame)
qAmqpDebug() << Q_FUNC_INFO << "called!"; qAmqpDebug("-> connection#secure()");
} }
void QAmqpClientPrivate::tune(const QAmqpMethodFrame &frame) void QAmqpClientPrivate::tune(const QAmqpMethodFrame &frame)
{ {
qAmqpDebug(">> Tune");
QByteArray data = frame.arguments(); QByteArray data = frame.arguments();
QDataStream stream(&data, QIODevice::ReadOnly); QDataStream stream(&data, QIODevice::ReadOnly);
@ -430,9 +419,8 @@ void QAmqpClientPrivate::tune(const QAmqpMethodFrame &frame)
channelMax = !channelMax ? channel_max : qMax(channel_max, channelMax); channelMax = !channelMax ? channel_max : qMax(channel_max, channelMax);
heartbeatDelay = !heartbeatDelay ? heartbeat_delay: heartbeatDelay; heartbeatDelay = !heartbeatDelay ? heartbeat_delay: heartbeatDelay;
qAmqpDebug(">> channel_max: %d", channelMax); qAmqpDebug("-> connection#tune( channel_max=%d, frame_max=%d, heartbeat=%d )",
qAmqpDebug(">> frame_max: %d", frameMax); channelMax, frameMax, heartbeatDelay);
qAmqpDebug(">> heartbeat: %d", heartbeatDelay);
if (heartbeatTimer) { if (heartbeatTimer) {
heartbeatTimer->setInterval(heartbeatDelay * 1000); heartbeatTimer->setInterval(heartbeatDelay * 1000);
@ -450,27 +438,25 @@ void QAmqpClientPrivate::openOk(const QAmqpMethodFrame &frame)
{ {
Q_Q(QAmqpClient); Q_Q(QAmqpClient);
Q_UNUSED(frame) Q_UNUSED(frame)
qAmqpDebug(">> OpenOK"); qAmqpDebug("-> connection#openOk()");
connected = true; connected = true;
Q_EMIT q->connected(); Q_EMIT q->connected();
} }
void QAmqpClientPrivate::closeOk(const QAmqpMethodFrame &frame) void QAmqpClientPrivate::closeOk(const QAmqpMethodFrame &frame)
{ {
Q_Q(QAmqpClient);
Q_UNUSED(frame) Q_UNUSED(frame)
qAmqpDebug() << Q_FUNC_INFO << "received"; qAmqpDebug("-> connection#closeOk()");
connected = false; connected = false;
if (heartbeatTimer) if (heartbeatTimer)
heartbeatTimer->stop(); heartbeatTimer->stop();
socket->disconnectFromHost(); socket->disconnectFromHost();
Q_EMIT q->disconnected();
} }
void QAmqpClientPrivate::close(const QAmqpMethodFrame &frame) void QAmqpClientPrivate::close(const QAmqpMethodFrame &frame)
{ {
Q_Q(QAmqpClient); Q_Q(QAmqpClient);
qAmqpDebug(">> CLOSE");
QByteArray data = frame.arguments(); QByteArray data = frame.arguments();
QDataStream stream(&data, QIODevice::ReadOnly); QDataStream stream(&data, QIODevice::ReadOnly);
qint16 code = 0, classId, methodId; qint16 code = 0, classId, methodId;
@ -479,10 +465,8 @@ void QAmqpClientPrivate::close(const QAmqpMethodFrame &frame)
stream >> classId; stream >> classId;
stream >> methodId; stream >> methodId;
qAmqpDebug(">> code: %d", code); qAmqpDebug("-> connection#close( reply-code=%d, reply-text=%s, class-id=%d, method-id:%d )",
qAmqpDebug(">> text: %s", qPrintable(text)); code, qPrintable(text), classId, methodId);
qAmqpDebug(">> class-id: %d", classId);
qAmqpDebug(">> method-id: %d", methodId);
QAMQP::Error checkError = static_cast<QAMQP::Error>(code); QAMQP::Error checkError = static_cast<QAMQP::Error>(code);
if (checkError != QAMQP::NoError) { if (checkError != QAMQP::NoError) {
@ -507,6 +491,7 @@ void QAmqpClientPrivate::close(const QAmqpMethodFrame &frame)
// complete handshake // complete handshake
QAmqpMethodFrame closeOkFrame(QAmqpFrame::Connection, QAmqpClientPrivate::miCloseOk); QAmqpMethodFrame closeOkFrame(QAmqpFrame::Connection, QAmqpClientPrivate::miCloseOk);
qAmqpDebug("<- connection#closeOk()");
sendFrame(closeOkFrame); sendFrame(closeOkFrame);
} }
@ -525,14 +510,15 @@ void QAmqpClientPrivate::startOk()
authenticator->write(stream); authenticator->write(stream);
QAmqpFrame::writeAmqpField(stream, QAmqpMetaType::ShortString, QLatin1String("en_US")); QAmqpFrame::writeAmqpField(stream, QAmqpMetaType::ShortString, QLatin1String("en_US"));
frame.setArguments(arguments); frame.setArguments(arguments);
qAmqpDebug("<- connection#startOk()"); // @todo: fill this out
sendFrame(frame); sendFrame(frame);
} }
void QAmqpClientPrivate::secureOk() void QAmqpClientPrivate::secureOk()
{ {
qAmqpDebug() << Q_FUNC_INFO; qAmqpDebug("-> connection#secureOk()");
} }
void QAmqpClientPrivate::tuneOk() void QAmqpClientPrivate::tuneOk()
@ -545,6 +531,9 @@ void QAmqpClientPrivate::tuneOk()
stream << qint32(frameMax); stream << qint32(frameMax);
stream << qint16(heartbeatDelay); stream << qint16(heartbeatDelay);
qAmqpDebug("<- connection#tuneOk( channelMax=%d, frameMax=%d, heartbeatDelay=%d",
channelMax, frameMax, heartbeatDelay);
frame.setArguments(arguments); frame.setArguments(arguments);
sendFrame(frame); sendFrame(frame);
} }
@ -560,6 +549,9 @@ void QAmqpClientPrivate::open()
stream << qint8(0); stream << qint8(0);
stream << qint8(0); stream << qint8(0);
qAmqpDebug("<- connection#open( virtualHost=%s, reserved-1=%d, reserved-2=%d",
qPrintable(virtualHost), 0, 0);
frame.setArguments(arguments); frame.setArguments(arguments);
sendFrame(frame); sendFrame(frame);
} }
@ -573,6 +565,9 @@ void QAmqpClientPrivate::close(int code, const QString &text, int classId, int m
stream << qint16(classId); stream << qint16(classId);
stream << qint16(methodId); stream << qint16(methodId);
qAmqpDebug("<- connection#close( reply-code=%d, reply-text=%s, class-id=%d, method-id:%d )",
code, qPrintable(text), classId, methodId);
QAmqpMethodFrame frame(QAmqpFrame::Connection, QAmqpClientPrivate::miClose); QAmqpMethodFrame frame(QAmqpFrame::Connection, QAmqpClientPrivate::miClose);
frame.setArguments(arguments); frame.setArguments(arguments);
sendFrame(frame); sendFrame(frame);

View File

@ -62,6 +62,11 @@ void QAmqpExchangePrivate::declare()
stream << qint8(options); stream << qint8(options);
QAmqpFrame::writeAmqpField(stream, QAmqpMetaType::Hash, arguments); QAmqpFrame::writeAmqpField(stream, QAmqpMetaType::Hash, arguments);
qAmqpDebug("<- exchange#declare( name=%s, type=%s, passive=%d, durable=%d, no-wait=%d )",
qPrintable(name), qPrintable(type),
options.testFlag(QAmqpExchange::Passive), options.testFlag(QAmqpExchange::Durable),
options.testFlag(QAmqpExchange::NoWait));
frame.setArguments(args); frame.setArguments(args);
sendFrame(frame); sendFrame(frame);
delayedDeclare = false; delayedDeclare = false;
@ -113,9 +118,8 @@ bool QAmqpExchangePrivate::_q_method(const QAmqpMethodFrame &frame)
void QAmqpExchangePrivate::declareOk(const QAmqpMethodFrame &frame) void QAmqpExchangePrivate::declareOk(const QAmqpMethodFrame &frame)
{ {
Q_UNUSED(frame) Q_UNUSED(frame)
Q_Q(QAmqpExchange); Q_Q(QAmqpExchange);
qAmqpDebug() << "declared exchange: " << name; qAmqpDebug("-> exchange[ %s ]#declareOk()", qPrintable(name));
declared = true; declared = true;
Q_EMIT q->declared(); Q_EMIT q->declared();
} }
@ -123,9 +127,8 @@ void QAmqpExchangePrivate::declareOk(const QAmqpMethodFrame &frame)
void QAmqpExchangePrivate::deleteOk(const QAmqpMethodFrame &frame) void QAmqpExchangePrivate::deleteOk(const QAmqpMethodFrame &frame)
{ {
Q_UNUSED(frame) Q_UNUSED(frame)
Q_Q(QAmqpExchange); Q_Q(QAmqpExchange);
qAmqpDebug() << "deleted exchange: " << name; qAmqpDebug("-> exchange#deleteOk[ %s ]()", qPrintable(name));
declared = false; declared = false;
Q_EMIT q->removed(); Q_EMIT q->removed();
} }
@ -133,7 +136,7 @@ void QAmqpExchangePrivate::deleteOk(const QAmqpMethodFrame &frame)
void QAmqpExchangePrivate::_q_disconnected() void QAmqpExchangePrivate::_q_disconnected()
{ {
QAmqpChannelPrivate::_q_disconnected(); QAmqpChannelPrivate::_q_disconnected();
qAmqpDebug() << "exchange " << name << " disconnected"; qAmqpDebug() << "exchange disconnected: " << name;
delayedDeclare = false; delayedDeclare = false;
declared = false; declared = false;
unconfirmedDeliveryTags.clear(); unconfirmedDeliveryTags.clear();
@ -158,10 +161,8 @@ void QAmqpExchangePrivate::basicReturn(const QAmqpMethodFrame &frame)
Q_EMIT q->error(error); Q_EMIT q->error(error);
} }
qAmqpDebug(">> replyCode: %d", replyCode); qAmqpDebug("-> basic#return( reply-code=%d, reply-text=%s, exchange=%s, routing-key=%s )",
qAmqpDebug(">> replyText: %s", qPrintable(replyText)); replyCode, qPrintable(replyText), qPrintable(exchangeName), qPrintable(routingKey));
qAmqpDebug(">> exchangeName: %s", qPrintable(exchangeName));
qAmqpDebug(">> routingKey: %s", qPrintable(routingKey));
} }
void QAmqpExchangePrivate::handleAckOrNack(const QAmqpMethodFrame &frame) void QAmqpExchangePrivate::handleAckOrNack(const QAmqpMethodFrame &frame)
@ -266,6 +267,9 @@ void QAmqpExchange::remove(int options)
QAmqpFrame::writeAmqpField(stream, QAmqpMetaType::ShortString, d->name); QAmqpFrame::writeAmqpField(stream, QAmqpMetaType::ShortString, d->name);
stream << qint8(options); stream << qint8(options);
qAmqpDebug("<- exchange#delete( exchange=%s, if-unused=%d, no-wait=%d )",
qPrintable(d->name), options & QAmqpExchange::roIfUnused, options & QAmqpExchange::roNoWait);
frame.setArguments(arguments); frame.setArguments(arguments);
d->sendFrame(frame); d->sendFrame(frame);
} }
@ -305,6 +309,10 @@ void QAmqpExchange::publish(const QByteArray &message, const QString &routingKey
QAmqpFrame::writeAmqpField(out, QAmqpMetaType::ShortString, routingKey); QAmqpFrame::writeAmqpField(out, QAmqpMetaType::ShortString, routingKey);
out << qint8(publishOptions); out << qint8(publishOptions);
qAmqpDebug("<- basic#publish( exchange=%s, routing-key=%s, mandatory=%d, immediate=%d )",
qPrintable(d->name), qPrintable(routingKey),
publishOptions & QAmqpExchange::poMandatory, publishOptions & QAmqpExchange::poImmediate);
frame.setArguments(arguments); frame.setArguments(arguments);
d->sendFrame(frame); d->sendFrame(frame);

View File

@ -147,7 +147,6 @@ void QAmqpQueuePrivate::_q_body(const QAmqpContentBodyFrame &frame)
void QAmqpQueuePrivate::declareOk(const QAmqpMethodFrame &frame) void QAmqpQueuePrivate::declareOk(const QAmqpMethodFrame &frame)
{ {
Q_Q(QAmqpQueue); Q_Q(QAmqpQueue);
qAmqpDebug() << "declared queue: " << name;
declared = true; declared = true;
QByteArray data = frame.arguments(); QByteArray data = frame.arguments();
@ -156,7 +155,9 @@ void QAmqpQueuePrivate::declareOk(const QAmqpMethodFrame &frame)
name = QAmqpFrame::readAmqpField(stream, QAmqpMetaType::ShortString).toString(); name = QAmqpFrame::readAmqpField(stream, QAmqpMetaType::ShortString).toString();
qint32 messageCount = 0, consumerCount = 0; qint32 messageCount = 0, consumerCount = 0;
stream >> messageCount >> consumerCount; stream >> messageCount >> consumerCount;
qAmqpDebug("message count %d\nConsumer count: %d", messageCount, consumerCount);
qAmqpDebug("-> queue#declareOk( queue-name=%s, message-count=%d, consumer-count=%d )",
qPrintable(name), messageCount, consumerCount);
Q_EMIT q->declared(); Q_EMIT q->declared();
} }
@ -164,28 +165,31 @@ void QAmqpQueuePrivate::declareOk(const QAmqpMethodFrame &frame)
void QAmqpQueuePrivate::purgeOk(const QAmqpMethodFrame &frame) void QAmqpQueuePrivate::purgeOk(const QAmqpMethodFrame &frame)
{ {
Q_Q(QAmqpQueue); Q_Q(QAmqpQueue);
qAmqpDebug() << "purged queue: " << name;
QByteArray data = frame.arguments(); QByteArray data = frame.arguments();
QDataStream stream(&data, QIODevice::ReadOnly); QDataStream stream(&data, QIODevice::ReadOnly);
qint32 messageCount = 0; qint32 messageCount = 0;
stream >> messageCount; stream >> messageCount;
qAmqpDebug("-> queue#purgeOk( queue-name=%s, message-count=%d )",
qPrintable(name), messageCount);
Q_EMIT q->purged(messageCount); Q_EMIT q->purged(messageCount);
} }
void QAmqpQueuePrivate::deleteOk(const QAmqpMethodFrame &frame) void QAmqpQueuePrivate::deleteOk(const QAmqpMethodFrame &frame)
{ {
Q_Q(QAmqpQueue); Q_Q(QAmqpQueue);
qAmqpDebug() << "deleted queue: " << name;
declared = false; declared = false;
QByteArray data = frame.arguments(); QByteArray data = frame.arguments();
QDataStream stream(&data, QIODevice::ReadOnly); QDataStream stream(&data, QIODevice::ReadOnly);
qint32 messageCount = 0; qint32 messageCount = 0;
stream >> messageCount; stream >> messageCount;
qAmqpDebug("Message count %d", messageCount);
qAmqpDebug("-> queue#deleteOk( queue-name=%s, message-count=%d )",
qPrintable(name), messageCount);
Q_EMIT q->removed(); Q_EMIT q->removed();
} }
@ -193,23 +197,23 @@ void QAmqpQueuePrivate::deleteOk(const QAmqpMethodFrame &frame)
void QAmqpQueuePrivate::bindOk(const QAmqpMethodFrame &frame) void QAmqpQueuePrivate::bindOk(const QAmqpMethodFrame &frame)
{ {
Q_UNUSED(frame) Q_UNUSED(frame)
Q_Q(QAmqpQueue); Q_Q(QAmqpQueue);
qAmqpDebug() << Q_FUNC_INFO << "bound to exchange"; qAmqpDebug("-> queue[ %s ]#bindOk()", qPrintable(name));
Q_EMIT q->bound(); Q_EMIT q->bound();
} }
void QAmqpQueuePrivate::unbindOk(const QAmqpMethodFrame &frame) void QAmqpQueuePrivate::unbindOk(const QAmqpMethodFrame &frame)
{ {
Q_UNUSED(frame) Q_UNUSED(frame)
Q_Q(QAmqpQueue); Q_Q(QAmqpQueue);
qAmqpDebug() << Q_FUNC_INFO << "unbound from exchange"; qAmqpDebug("-> queue[ %s ]#unbindOk()", qPrintable(name));
Q_EMIT q->unbound(); Q_EMIT q->unbound();
} }
void QAmqpQueuePrivate::getOk(const QAmqpMethodFrame &frame) void QAmqpQueuePrivate::getOk(const QAmqpMethodFrame &frame)
{ {
qAmqpDebug("-> queue[ %s ]#getOk()", qPrintable(name));
QByteArray data = frame.arguments(); QByteArray data = frame.arguments();
QDataStream in(&data, QIODevice::ReadOnly); QDataStream in(&data, QIODevice::ReadOnly);
@ -224,13 +228,14 @@ void QAmqpQueuePrivate::getOk(const QAmqpMethodFrame &frame)
void QAmqpQueuePrivate::consumeOk(const QAmqpMethodFrame &frame) void QAmqpQueuePrivate::consumeOk(const QAmqpMethodFrame &frame)
{ {
Q_Q(QAmqpQueue); Q_Q(QAmqpQueue);
qAmqpDebug() << "consume ok: " << name;
QByteArray data = frame.arguments(); QByteArray data = frame.arguments();
QDataStream stream(&data, QIODevice::ReadOnly); QDataStream stream(&data, QIODevice::ReadOnly);
consumerTag = QAmqpFrame::readAmqpField(stream, QAmqpMetaType::ShortString).toString(); consumerTag = QAmqpFrame::readAmqpField(stream, QAmqpMetaType::ShortString).toString();
qAmqpDebug("consumer tag = %s", qPrintable(consumerTag));
consuming = true; consuming = true;
consumeRequested = false; consumeRequested = false;
qAmqpDebug("-> queue[ %s ]#consumeOk( consumer-tag=%s )", qPrintable(name), qPrintable(consumerTag));
Q_EMIT q->consuming(consumerTag); Q_EMIT q->consuming(consumerTag);
} }
@ -266,6 +271,11 @@ void QAmqpQueuePrivate::declare()
out << qint8(options); out << qint8(options);
QAmqpFrame::writeAmqpField(out, QAmqpMetaType::Hash, arguments); QAmqpFrame::writeAmqpField(out, QAmqpMetaType::Hash, arguments);
qAmqpDebug("<- queue#declare( queue=%s, passive=%d, durable=%d, exclusive=%d, auto-delete=%d, no-wait=%d )",
qPrintable(name), options & QAmqpQueue::Passive, options & QAmqpQueue::Durable,
options & QAmqpQueue::Exclusive, options & QAmqpQueue::AutoDelete,
options & QAmqpQueue::NoWait);
frame.setArguments(arguments); frame.setArguments(arguments);
sendFrame(frame); sendFrame(frame);
@ -285,6 +295,8 @@ void QAmqpQueuePrivate::cancelOk(const QAmqpMethodFrame &frame)
return; return;
} }
qAmqpDebug("-> queue[ %s ]#cancelOk( consumer-tag=%s )", qPrintable(name), qPrintable(consumerTag));
consumerTag.clear(); consumerTag.clear();
consuming = false; consuming = false;
consumeRequested = false; consumeRequested = false;
@ -360,6 +372,9 @@ void QAmqpQueue::remove(int options)
QAmqpFrame::writeAmqpField(out, QAmqpMetaType::ShortString, d->name); QAmqpFrame::writeAmqpField(out, QAmqpMetaType::ShortString, d->name);
out << qint8(options); out << qint8(options);
qAmqpDebug("<- queue#delete( queue=%s, if-unused=%d, if-empty=%d )",
qPrintable(d->name), options & QAmqpQueue::roIfUnused, options & QAmqpQueue::roIfEmpty);
frame.setArguments(arguments); frame.setArguments(arguments);
d->sendFrame(frame); d->sendFrame(frame);
} }
@ -380,6 +395,8 @@ void QAmqpQueue::purge()
QAmqpFrame::writeAmqpField(out, QAmqpMetaType::ShortString, d->name); QAmqpFrame::writeAmqpField(out, QAmqpMetaType::ShortString, d->name);
out << qint8(0); // no-wait out << qint8(0); // no-wait
qAmqpDebug("<- queue#purge( queue=%s, no-wait=%d )", qPrintable(d->name), 0);
frame.setArguments(arguments); frame.setArguments(arguments);
d->sendFrame(frame); d->sendFrame(frame);
} }
@ -416,6 +433,10 @@ void QAmqpQueue::bind(const QString &exchangeName, const QString &key)
out << qint8(0); // no-wait out << qint8(0); // no-wait
QAmqpFrame::writeAmqpField(out, QAmqpMetaType::Hash, QAmqpTable()); QAmqpFrame::writeAmqpField(out, QAmqpMetaType::Hash, QAmqpTable());
qAmqpDebug("<- queue#bind( queue=%s, exchange=%s, routing-key=%s, no-wait=%d )",
qPrintable(d->name), qPrintable(exchangeName), qPrintable(key),
0);
frame.setArguments(arguments); frame.setArguments(arguments);
d->sendFrame(frame); d->sendFrame(frame);
} }
@ -449,6 +470,9 @@ void QAmqpQueue::unbind(const QString &exchangeName, const QString &key)
QAmqpFrame::writeAmqpField(out, QAmqpMetaType::ShortString, key); QAmqpFrame::writeAmqpField(out, QAmqpMetaType::ShortString, key);
QAmqpFrame::writeAmqpField(out, QAmqpMetaType::Hash, QAmqpTable()); QAmqpFrame::writeAmqpField(out, QAmqpMetaType::Hash, QAmqpTable());
qAmqpDebug("<- queue#unbind( queue=%s, exchange=%s, routing-key=%s )",
qPrintable(d->name), qPrintable(exchangeName), qPrintable(key));
frame.setArguments(arguments); frame.setArguments(arguments);
d->sendFrame(frame); d->sendFrame(frame);
} }
@ -484,6 +508,11 @@ bool QAmqpQueue::consume(int options)
out << qint8(options); out << qint8(options);
QAmqpFrame::writeAmqpField(out, QAmqpMetaType::Hash, QAmqpTable()); QAmqpFrame::writeAmqpField(out, QAmqpMetaType::Hash, QAmqpTable());
qAmqpDebug("<- basic#consume( queue=%s, consumer-tag=%s, no-local=%d, no-ack=%d, exclusive=%d, no-wait=%d )",
qPrintable(d->name), qPrintable(d->consumerTag),
options & QAmqpQueue::coNoLocal, options & QAmqpQueue::coNoAck,
options & QAmqpQueue::coExclusive, options & QAmqpQueue::coNoWait);
frame.setArguments(arguments); frame.setArguments(arguments);
d->sendFrame(frame); d->sendFrame(frame);
d->consumeRequested = true; d->consumeRequested = true;
@ -532,6 +561,8 @@ void QAmqpQueue::get(bool noAck)
QAmqpFrame::writeAmqpField(out, QAmqpMetaType::ShortString, d->name); QAmqpFrame::writeAmqpField(out, QAmqpMetaType::ShortString, d->name);
out << qint8(noAck ? 1 : 0); // no-ack out << qint8(noAck ? 1 : 0); // no-ack
qAmqpDebug("<- basic#get( queue=%s, no-ack=%d )", qPrintable(d->name), noAck);
frame.setArguments(arguments); frame.setArguments(arguments);
d->sendFrame(frame); d->sendFrame(frame);
} }
@ -558,6 +589,8 @@ void QAmqpQueue::ack(qlonglong deliveryTag, bool multiple)
out << deliveryTag; out << deliveryTag;
out << qint8(multiple ? 1 : 0); // multiple out << qint8(multiple ? 1 : 0); // multiple
qAmqpDebug("<- basic#ack( delivery-tag=%llu, multiple=%d )", deliveryTag, multiple);
frame.setArguments(arguments); frame.setArguments(arguments);
d->sendFrame(frame); d->sendFrame(frame);
} }
@ -584,6 +617,8 @@ void QAmqpQueue::reject(qlonglong deliveryTag, bool requeue)
out << deliveryTag; out << deliveryTag;
out << qint8(requeue ? 1 : 0); out << qint8(requeue ? 1 : 0);
qAmqpDebug("<- basic#reject( delivery-tag=%llu, requeue=%d )", deliveryTag, requeue);
frame.setArguments(arguments); frame.setArguments(arguments);
d->sendFrame(frame); d->sendFrame(frame);
} }
@ -610,6 +645,8 @@ bool QAmqpQueue::cancel(bool noWait)
QAmqpFrame::writeAmqpField(out, QAmqpMetaType::ShortString, d->consumerTag); QAmqpFrame::writeAmqpField(out, QAmqpMetaType::ShortString, d->consumerTag);
out << (noWait ? qint8(0x01) : qint8(0x0)); out << (noWait ? qint8(0x01) : qint8(0x0));
qAmqpDebug("<- basic#cancel( consumer-tag=%s, no-wait=%d )", qPrintable(d->consumerTag), noWait);
frame.setArguments(arguments); frame.setArguments(arguments);
d->sendFrame(frame); d->sendFrame(frame);
return true; return true;