From b210ae04b88afa38238ca56e474ca60533f2768b Mon Sep 17 00:00:00 2001 From: Alan Conway Date: Thu, 18 Sep 2008 20:18:29 +0000 Subject: Dump shared state to new cluster members. git-svn-id: https://svn.apache.org/repos/asf/incubator/qpid/trunk/qpid@696788 13f79535-47bb-0310-9956-ffa450edef68 --- cpp/src/qpid/cluster/DumpClient.cpp | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) (limited to 'cpp/src/qpid/cluster/DumpClient.cpp') diff --git a/cpp/src/qpid/cluster/DumpClient.cpp b/cpp/src/qpid/cluster/DumpClient.cpp index f76a55c0d3..43c30d3b07 100644 --- a/cpp/src/qpid/cluster/DumpClient.cpp +++ b/cpp/src/qpid/cluster/DumpClient.cpp @@ -27,12 +27,21 @@ #include "qpid/broker/Exchange.h" #include "qpid/broker/ExchangeRegistry.h" #include "qpid/framing/MessageTransferBody.h" +#include "qpid/framing/ClusterConnectionDumpCompleteBody.h" #include "qpid/framing/enum.h" +#include "qpid/framing/ProtocolVersion.h" #include "qpid/log/Statement.h" #include "qpid/Url.h" #include namespace qpid { + +namespace client { +struct ConnectionAccess { + static void setVersion(Connection& c, const framing::ProtocolVersion& v) { c.version = v; } +}; +} // namespace client + namespace cluster { using broker::Broker; @@ -40,16 +49,18 @@ using broker::Exchange; using broker::Queue; using broker::QueueBinding; using broker::Message; +using namespace framing; using namespace framing::message; - using namespace client; + DumpClient::DumpClient(const Url& url, Broker& b, const boost::function& ok, const boost::function& fail) : donor(b), done(ok), failed(fail) { - // FIXME aconway 2008-09-16: Identify as DumpClient connection. + // Special version identifies this as a catch-up connectionn. + client::ConnectionAccess::setVersion(connection, ProtocolVersion(0x80 , 0x80 + 10)); connection.open(url); session = connection.newSession(); } @@ -65,9 +76,10 @@ void DumpClient::dump() { // Catch-up exchange is used to route messages to the proper queue without modifying routing key. session.exchangeDeclare(arg::exchange=CATCH_UP, arg::type="fanout", arg::autoDelete=true); donor.getQueues().eachQueue(boost::bind(&DumpClient::dumpQueue, this, _1)); + SessionBase_0_10Access sb(session); + // FIXME aconway 2008-09-18: inidicate successful end-of-dump. session.sync(); session.close(); - // FIXME aconway 2008-09-17: send dump complete indication. connection.close(); } -- cgit v1.2.1