From c171b5c3378e8594eb9143c50ebeeb3b92f597bd Mon Sep 17 00:00:00 2001 From: Stuart Longland Date: Sat, 2 May 2015 21:01:07 +1000 Subject: [PATCH] QAmqpChannelHash: Add contains function --- src/qamqpchannelhash.cpp | 11 +++++++++++ src/qamqpchannelhash_p.h | 5 +++++ src/qamqpclient.cpp | 12 ++++++------ 3 files changed, 22 insertions(+), 6 deletions(-) diff --git a/src/qamqpchannelhash.cpp b/src/qamqpchannelhash.cpp index c92a138..31ab795 100644 --- a/src/qamqpchannelhash.cpp +++ b/src/qamqpchannelhash.cpp @@ -35,6 +35,17 @@ QAmqpChannel* QAmqpChannelHash::get(const QString& name) const return channels.value(name); } + +/*! +* Return true if the named channel exists. +*/ +bool QAmqpChannelHash::contains(const QString& name) const +{ + if (name.isNull()) + return channels.contains(QString("")); + return channels.contains(name); +} + /*! * Store an exchange in the hash. The nameless exchange is stored under * the name "". diff --git a/src/qamqpchannelhash_p.h b/src/qamqpchannelhash_p.h index c438022..29d3486 100644 --- a/src/qamqpchannelhash_p.h +++ b/src/qamqpchannelhash_p.h @@ -47,6 +47,11 @@ public: */ QAmqpChannel* get(const QString& name) const; + /*! + * Return true if the named channel exists. + */ + bool contains(const QString& name) const; + /*! * Store an exchange in the hash. The nameless exchange is stored under * the name "". diff --git a/src/qamqpclient.cpp b/src/qamqpclient.cpp index 12ac3f4..432e5c7 100644 --- a/src/qamqpclient.cpp +++ b/src/qamqpclient.cpp @@ -660,9 +660,9 @@ QAmqpExchange *QAmqpClient::createExchange(int channelNumber) QAmqpExchange *QAmqpClient::createExchange(const QString &name, int channelNumber) { Q_D(QAmqpClient); - QAmqpExchange *exchange = static_cast(d->exchanges.get(name)); - if (exchange != NULL) - return exchange; + QAmqpExchange *exchange; + if (d->exchanges.contains(name)) + return static_cast(d->exchanges.get(name)); exchange = new QAmqpExchange(channelNumber, this); d->methodHandlersByChannel[exchange->channelNumber()].append(exchange->d_func()); @@ -684,9 +684,9 @@ QAmqpQueue *QAmqpClient::createQueue(int channelNumber) QAmqpQueue *QAmqpClient::createQueue(const QString &name, int channelNumber) { Q_D(QAmqpClient); - QAmqpQueue *queue = static_cast(d->queues.get(name)); - if (queue != NULL) - return queue; + QAmqpQueue *queue; + if (d->queues.contains(name)) + return static_cast(d->queues.get(name)); queue = new QAmqpQueue(channelNumber, this); d->methodHandlersByChannel[queue->channelNumber()].append(queue->d_func());