QAmqpClientPrivate: Store pointers to named queues and exchanges.
This commit is contained in:
parent
943180da27
commit
ae77ff56e0
|
|
@ -660,14 +660,19 @@ QAmqpExchange *QAmqpClient::createExchange(int channelNumber)
|
|||
QAmqpExchange *QAmqpClient::createExchange(const QString &name, int channelNumber)
|
||||
{
|
||||
Q_D(QAmqpClient);
|
||||
if (!name.isEmpty() && d->exchanges.contains(name))
|
||||
return d->exchanges[name];
|
||||
|
||||
QAmqpExchange *exchange = new QAmqpExchange(channelNumber, this);
|
||||
d->methodHandlersByChannel[exchange->channelNumber()].append(exchange->d_func());
|
||||
connect(this, SIGNAL(connected()), exchange, SLOT(_q_open()));
|
||||
connect(this, SIGNAL(disconnected()), exchange, SLOT(_q_disconnected()));
|
||||
exchange->d_func()->open();
|
||||
|
||||
if (!name.isEmpty())
|
||||
if (!name.isEmpty()) {
|
||||
exchange->setName(name);
|
||||
d->exchanges[name] = exchange;
|
||||
}
|
||||
return exchange;
|
||||
}
|
||||
|
||||
|
|
@ -679,6 +684,9 @@ QAmqpQueue *QAmqpClient::createQueue(int channelNumber)
|
|||
QAmqpQueue *QAmqpClient::createQueue(const QString &name, int channelNumber)
|
||||
{
|
||||
Q_D(QAmqpClient);
|
||||
if (!name.isEmpty() && d->queues.contains(name))
|
||||
return d->queues[name];
|
||||
|
||||
QAmqpQueue *queue = new QAmqpQueue(channelNumber, this);
|
||||
d->methodHandlersByChannel[queue->channelNumber()].append(queue->d_func());
|
||||
d->contentHandlerByChannel[queue->channelNumber()].append(queue->d_func());
|
||||
|
|
@ -687,8 +695,10 @@ QAmqpQueue *QAmqpClient::createQueue(const QString &name, int channelNumber)
|
|||
connect(this, SIGNAL(disconnected()), queue, SLOT(_q_disconnected()));
|
||||
queue->d_func()->open();
|
||||
|
||||
if (!name.isEmpty())
|
||||
if (!name.isEmpty()) {
|
||||
queue->setName(name);
|
||||
d->queues[name] = queue;
|
||||
}
|
||||
return queue;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -100,6 +100,12 @@ public:
|
|||
QAMQP::Error error;
|
||||
QString errorString;
|
||||
|
||||
/*! Exchange objects */
|
||||
QHash<QString, QAmqpExchange*> exchanges;
|
||||
|
||||
/*! Named queue objects */
|
||||
QHash<QString, QAmqpQueue*> queues;
|
||||
|
||||
QAmqpClient * const q_ptr;
|
||||
Q_DECLARE_PUBLIC(QAmqpClient)
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue