diff options
Diffstat (limited to 'qpid/cpp/src/qpid/cluster/Cluster.h')
-rw-r--r-- | qpid/cpp/src/qpid/cluster/Cluster.h | 14 |
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&); |