summaryrefslogtreecommitdiff
path: root/qpid/cpp/src/qpid/cluster/Cluster.h
diff options
context:
space:
mode:
Diffstat (limited to 'qpid/cpp/src/qpid/cluster/Cluster.h')
-rw-r--r--qpid/cpp/src/qpid/cluster/Cluster.h14
1 files changed, 14 insertions, 0 deletions
diff --git a/qpid/cpp/src/qpid/cluster/Cluster.h b/qpid/cpp/src/qpid/cluster/Cluster.h
index 1018684e7e..6f5e6d9cfb 100644
--- a/qpid/cpp/src/qpid/cluster/Cluster.h
+++ b/qpid/cpp/src/qpid/cluster/Cluster.h
@@ -21,6 +21,7 @@
#include "qpid/cluster/Cpg.h"
#include "qpid/cluster/ShadowConnectionOutputHandler.h"
+#include "qpid/cluster/PollableQueue.h"
#include "qpid/broker/Broker.h"
#include "qpid/broker/Connection.h"
@@ -96,10 +97,17 @@ class Cluster : private Cpg::Handler, public RefCounted
typedef std::map<Id, Member> MemberMap;
typedef std::map<ShadowConnectionId, ConnectionInterceptor*> ShadowConnectionMap;
+ struct DeliveredFrame {
+ framing::AMQFrame frame; Id from; void* connection;
+ DeliveredFrame(const framing::AMQFrame& f, const Id i, void* c)
+ : frame(f), from(i), connection(c) {}
+ };
+
boost::function<void()> shutdownNext;
void notify(); ///< Notify cluster of my details.
+ /** CPG deliver callback. */
void deliver(
cpg_handle_t /*handle*/,
struct cpg_name *group,
@@ -108,6 +116,7 @@ class Cluster : private Cpg::Handler, public RefCounted
void* /*msg*/,
int /*msg_len*/);
+ /** CPG config change callback */
void configChange(
cpg_handle_t /*handle*/,
struct cpg_name */*group*/,
@@ -116,6 +125,10 @@ class Cluster : private Cpg::Handler, public RefCounted
struct cpg_address */*joined*/, int /*nJoined*/
);
+ /** Callback to handle delivered frames from the deliverQueue. */
+ void deliverFrames(const PollableQueue<DeliveredFrame>::iterator& begin,
+ const PollableQueue<DeliveredFrame>::iterator& end);
+
void dispatch(sys::DispatchHandle&);
void disconnect(sys::DispatchHandle&);
@@ -134,6 +147,7 @@ class Cluster : private Cpg::Handler, public RefCounted
ShadowConnectionMap shadowConnectionMap;
ShadowConnectionOutputHandler shadowOut;
sys::DispatchHandle cpgDispatchHandle;
+ PollableQueue<DeliveredFrame> deliverQueue;
friend std::ostream& operator <<(std::ostream&, const Cluster&);
friend std::ostream& operator <<(std::ostream&, const MemberMap::value_type&);