diff options
Diffstat (limited to 'cpp/src/qpid/broker')
| -rw-r--r-- | cpp/src/qpid/broker/Broker.cpp | 1 | ||||
| -rw-r--r-- | cpp/src/qpid/broker/Broker.h | 5 | ||||
| -rw-r--r-- | cpp/src/qpid/broker/Message.cpp | 15 | ||||
| -rw-r--r-- | cpp/src/qpid/broker/Message.h | 8 | ||||
| -rw-r--r-- | cpp/src/qpid/broker/Queue.cpp | 2 |
5 files changed, 11 insertions, 20 deletions
diff --git a/cpp/src/qpid/broker/Broker.cpp b/cpp/src/qpid/broker/Broker.cpp index 3c67c429a0..849bf6d1f5 100644 --- a/cpp/src/qpid/broker/Broker.cpp +++ b/cpp/src/qpid/broker/Broker.cpp @@ -154,6 +154,7 @@ Broker::Broker(const Broker::Options& conf) : queueCleaner(queues, timer), queueEvents(poller,!conf.asyncQueueEvents), recovery(true), + clusterUpdatee(false), expiryPolicy(new ExpiryPolicy), connectionCounter(conf.maxConnections), getKnownBrokers(boost::bind(&Broker::getKnownBrokersImpl, this)) diff --git a/cpp/src/qpid/broker/Broker.h b/cpp/src/qpid/broker/Broker.h index 73d5860cb3..b85aa7d96c 100644 --- a/cpp/src/qpid/broker/Broker.h +++ b/cpp/src/qpid/broker/Broker.h @@ -168,8 +168,10 @@ public: std::vector<Url> getKnownBrokersImpl(); std::string federationTag; bool recovery; + bool clusterUpdatee; boost::intrusive_ptr<ExpiryPolicy> expiryPolicy; ConnectionCounter connectionCounter; + public: virtual ~Broker(); @@ -259,6 +261,9 @@ public: void setRecovery(bool set) { recovery = set; } bool getRecovery() const { return recovery; } + void setClusterUpdatee(bool set) { clusterUpdatee = set; } + bool isClusterUpdatee() const { return clusterUpdatee; } + management::ManagementAgent* getManagementAgent() { return managementAgent.get(); } ConnectionCounter& getConnectionCounter() {return connectionCounter;} diff --git a/cpp/src/qpid/broker/Message.cpp b/cpp/src/qpid/broker/Message.cpp index e2799b0bff..47ca7a7ae8 100644 --- a/cpp/src/qpid/broker/Message.cpp +++ b/cpp/src/qpid/broker/Message.cpp @@ -425,19 +425,4 @@ framing::FieldTable& Message::getOrInsertHeaders() return getProperties<MessageProperties>()->getApplicationHeaders(); } - -void Message::setUpdateDestination(const std::string& d) -{ - updateDestination = d; -} - - -bool Message::isUpdateMessage() -{ - return updateDestination.size() && isA<MessageTransferBody>() - && getMethod<MessageTransferBody>()->getDestination() == updateDestination; -} - -std::string Message::updateDestination; - }} // namespace qpid::broker diff --git a/cpp/src/qpid/broker/Message.h b/cpp/src/qpid/broker/Message.h index 3894960c95..375fa9ce26 100644 --- a/cpp/src/qpid/broker/Message.h +++ b/cpp/src/qpid/broker/Message.h @@ -104,6 +104,10 @@ public: return frames.as<T>(); } + template <class T> T* getMethod() { + return frames.as<T>(); + } + template <class T> bool isA() const { return frames.isA<T>(); } @@ -157,9 +161,6 @@ public: void setDequeueCompleteCallback(MessageCallback& cb); void resetDequeueCompleteCallback(); - bool isUpdateMessage(); - static void setUpdateDestination(const std::string&); - private: typedef std::map<const Queue*,boost::intrusive_ptr<Message> > Replacement; @@ -190,7 +191,6 @@ public: MessageCallback* dequeueCallback; uint32_t requiredCredit; - static std::string updateDestination; }; }} diff --git a/cpp/src/qpid/broker/Queue.cpp b/cpp/src/qpid/broker/Queue.cpp index 780c254a56..ef1adaf7ec 100644 --- a/cpp/src/qpid/broker/Queue.cpp +++ b/cpp/src/qpid/broker/Queue.cpp @@ -598,7 +598,7 @@ void Queue::push(boost::intrusive_ptr<Message>& msg, bool isRecovery){ string key = ft->getAsString(qpidVQMatchProperty); i = lvq.find(key); - if (i == lvq.end() || msg->isUpdateMessage()){ + if (i == lvq.end() || (broker && broker->isClusterUpdatee())) { messages.push_back(qm); listeners.populate(copy); lvq[key] = msg; |
