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)
|
QAmqpExchange *QAmqpClient::createExchange(const QString &name, int channelNumber)
|
||||||
{
|
{
|
||||||
Q_D(QAmqpClient);
|
Q_D(QAmqpClient);
|
||||||
|
if (!name.isEmpty() && d->exchanges.contains(name))
|
||||||
|
return d->exchanges[name];
|
||||||
|
|
||||||
QAmqpExchange *exchange = new QAmqpExchange(channelNumber, this);
|
QAmqpExchange *exchange = new QAmqpExchange(channelNumber, this);
|
||||||
d->methodHandlersByChannel[exchange->channelNumber()].append(exchange->d_func());
|
d->methodHandlersByChannel[exchange->channelNumber()].append(exchange->d_func());
|
||||||
connect(this, SIGNAL(connected()), exchange, SLOT(_q_open()));
|
connect(this, SIGNAL(connected()), exchange, SLOT(_q_open()));
|
||||||
connect(this, SIGNAL(disconnected()), exchange, SLOT(_q_disconnected()));
|
connect(this, SIGNAL(disconnected()), exchange, SLOT(_q_disconnected()));
|
||||||
exchange->d_func()->open();
|
exchange->d_func()->open();
|
||||||
|
|
||||||
if (!name.isEmpty())
|
if (!name.isEmpty()) {
|
||||||
exchange->setName(name);
|
exchange->setName(name);
|
||||||
|
d->exchanges[name] = exchange;
|
||||||
|
}
|
||||||
return exchange;
|
return exchange;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -679,6 +684,9 @@ QAmqpQueue *QAmqpClient::createQueue(int channelNumber)
|
||||||
QAmqpQueue *QAmqpClient::createQueue(const QString &name, int channelNumber)
|
QAmqpQueue *QAmqpClient::createQueue(const QString &name, int channelNumber)
|
||||||
{
|
{
|
||||||
Q_D(QAmqpClient);
|
Q_D(QAmqpClient);
|
||||||
|
if (!name.isEmpty() && d->queues.contains(name))
|
||||||
|
return d->queues[name];
|
||||||
|
|
||||||
QAmqpQueue *queue = new QAmqpQueue(channelNumber, this);
|
QAmqpQueue *queue = new QAmqpQueue(channelNumber, this);
|
||||||
d->methodHandlersByChannel[queue->channelNumber()].append(queue->d_func());
|
d->methodHandlersByChannel[queue->channelNumber()].append(queue->d_func());
|
||||||
d->contentHandlerByChannel[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()));
|
connect(this, SIGNAL(disconnected()), queue, SLOT(_q_disconnected()));
|
||||||
queue->d_func()->open();
|
queue->d_func()->open();
|
||||||
|
|
||||||
if (!name.isEmpty())
|
if (!name.isEmpty()) {
|
||||||
queue->setName(name);
|
queue->setName(name);
|
||||||
|
d->queues[name] = queue;
|
||||||
|
}
|
||||||
return queue;
|
return queue;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -100,6 +100,12 @@ public:
|
||||||
QAMQP::Error error;
|
QAMQP::Error error;
|
||||||
QString errorString;
|
QString errorString;
|
||||||
|
|
||||||
|
/*! Exchange objects */
|
||||||
|
QHash<QString, QAmqpExchange*> exchanges;
|
||||||
|
|
||||||
|
/*! Named queue objects */
|
||||||
|
QHash<QString, QAmqpQueue*> queues;
|
||||||
|
|
||||||
QAmqpClient * const q_ptr;
|
QAmqpClient * const q_ptr;
|
||||||
Q_DECLARE_PUBLIC(QAmqpClient)
|
Q_DECLARE_PUBLIC(QAmqpClient)
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue