From afefc741a9ad4c6299a47805a45a1c81a048e0a2 Mon Sep 17 00:00:00 2001 From: Gordon Sim Date: Tue, 20 Jan 2009 13:30:08 +0000 Subject: QPID-1567: added 'exactly-once' guarantee to asynchronous replication of queue state * altered replication protocol to detect and eliminate duplicates * added support for acknowledged transfer over inter-broker bridges * added option to qpid-route to control this git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk/qpid@736018 13f79535-47bb-0310-9956-ffa450edef68 --- cpp/src/qpid/replication/ReplicationExchange.h | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) (limited to 'cpp/src/qpid/replication/ReplicationExchange.h') diff --git a/cpp/src/qpid/replication/ReplicationExchange.h b/cpp/src/qpid/replication/ReplicationExchange.h index ed2b5956b6..897e4a954e 100644 --- a/cpp/src/qpid/replication/ReplicationExchange.h +++ b/cpp/src/qpid/replication/ReplicationExchange.h @@ -22,6 +22,7 @@ * */ #include "qpid/broker/Exchange.h" +#include "qpid/framing/SequenceNumber.h" namespace qpid { namespace replication { @@ -51,8 +52,12 @@ class ReplicationExchange : public qpid::broker::Exchange bool isBound(qpid::broker::Queue::shared_ptr queue, const std::string* const routingKey, const qpid::framing::FieldTable* const args); private: qpid::broker::QueueRegistry& queues; - bool expectingEnqueue; - std::string targetQueue; + qpid::framing::SequenceNumber sequence; + bool init; + + bool isDuplicate(const qpid::framing::FieldTable* args); + void handleEnqueueEvent(const qpid::framing::FieldTable* args, qpid::broker::Deliverable& msg); + void handleDequeueEvent(const qpid::framing::FieldTable* args); }; }} // namespace qpid::replication -- cgit v1.2.1