provide purged signal, other small cleanups

This commit is contained in:
Matt Broadstone 2014-06-10 13:04:57 -04:00
parent 478597063c
commit 46e974aeb8
4 changed files with 28 additions and 10 deletions

View File

@ -246,7 +246,6 @@ namespace Frame
}; };
/* /*
* @brief Class for working with content frames. * @brief Class for working with content frames.
* @detailed Implement main methods for serialize and deserialize raw content frame data. * @detailed Implement main methods for serialize and deserialize raw content frame data.
@ -261,7 +260,7 @@ namespace Frame
* | Property | Description | * | Property | Description |
* | ---------- | ----------- | * | ---------- | ----------- |
* | cpContentType | MIME content type | * | cpContentType | MIME content type |
* | ocpContentEncoding | MIME content encoding | * | cpContentEncoding | MIME content encoding |
* | cpHeaders | message header field table | * | cpHeaders | message header field table |
* | cpDeliveryMode| nonpersistent (1) or persistent (2) | * | cpDeliveryMode| nonpersistent (1) or persistent (2) |
* | cpPriority | message priority, 0 to 9 | * | cpPriority | message priority, 0 to 9 |

View File

@ -44,9 +44,7 @@ bool QueuePrivate::_q_method(const Frame::Method &frame)
unbindOk(frame); unbindOk(frame);
break; break;
case miPurgeOk: case miPurgeOk:
deleteOk(frame); purgeOk(frame);
break;
default:
break; break;
} }
@ -67,9 +65,8 @@ bool QueuePrivate::_q_method(const Frame::Method &frame)
case bmGetEmpty: case bmGetEmpty:
Q_EMIT q->empty(); Q_EMIT q->empty();
break; break;
default:
break;
} }
return true; return true;
} }
@ -132,10 +129,24 @@ void QueuePrivate::declareOk(const Frame::Method &frame)
Q_EMIT q->declared(); Q_EMIT q->declared();
} }
void QueuePrivate::purgeOk(const Frame::Method &frame)
{
Q_Q(Queue);
qAmqpDebug() << "purged queue: " << name;
QByteArray data = frame.arguments();
QDataStream stream(&data, QIODevice::ReadOnly);
qint32 messageCount = 0;
stream >> messageCount;
Q_EMIT q->purged(messageCount);
}
void QueuePrivate::deleteOk(const Frame::Method &frame) void QueuePrivate::deleteOk(const Frame::Method &frame)
{ {
Q_Q(Queue); Q_Q(Queue);
qAmqpDebug() << "Deleted or purged queue: " << name; qAmqpDebug() << "deleted queue: " << name;
declared = false; declared = false;
QByteArray data = frame.arguments(); QByteArray data = frame.arguments();
@ -291,6 +302,11 @@ void Queue::declare(int options)
d->declare(); d->declare();
} }
void Queue::forceRemove()
{
remove(0);
}
void Queue::remove(int options) void Queue::remove(int options)
{ {
Q_D(Queue); Q_D(Queue);
@ -420,7 +436,7 @@ void Queue::consume(int options)
Frame::writeField('s', out, d->name); Frame::writeField('s', out, d->name);
Frame::writeField('s', out, d->consumerTag); Frame::writeField('s', out, d->consumerTag);
out << qint8(options); // no-wait out << qint8(options);
Frame::writeField('F', out, Frame::TableField()); Frame::writeField('F', out, Frame::TableField());
frame.setArguments(arguments); frame.setArguments(arguments);

View File

@ -68,6 +68,7 @@ public:
void unbind(Exchange *exchange, const QString &key); void unbind(Exchange *exchange, const QString &key);
void purge(); void purge();
void remove(int options = roIfUnused|roIfEmpty|roNoWait); void remove(int options = roIfUnused|roIfEmpty|roNoWait);
void forceRemove();
// AMQP Basic // AMQP Basic
void consume(int options = NoOptions); void consume(int options = NoOptions);
@ -81,6 +82,7 @@ Q_SIGNALS:
void removed(); void removed();
void messageReceived(); void messageReceived();
void empty(); void empty();
void purged(int messageCount);
protected: protected:
// reimp Channel // reimp Channel

View File

@ -31,6 +31,7 @@ public:
virtual void _q_body(const Frame::ContentBody &frame); virtual void _q_body(const Frame::ContentBody &frame);
void declareOk(const Frame::Method &frame); void declareOk(const Frame::Method &frame);
void deleteOk(const Frame::Method &frame); void deleteOk(const Frame::Method &frame);
void purgeOk(const Frame::Method &frame);
void bindOk(const Frame::Method &frame); void bindOk(const Frame::Method &frame);
void unbindOk(const Frame::Method &frame); void unbindOk(const Frame::Method &frame);
void getOk(const Frame::Method &frame); void getOk(const Frame::Method &frame);