diff options
| author | Alan Conway <aconway@apache.org> | 2008-09-21 05:04:04 +0000 |
|---|---|---|
| committer | Alan Conway <aconway@apache.org> | 2008-09-21 05:04:04 +0000 |
| commit | 558e92d6c9cf8dfb875c1250ab8fe1cefaf30b05 (patch) | |
| tree | 9b306597ee07b264fa18580546ed5645f0c3766d /cpp/src/qpid/broker | |
| parent | 7c70d21ca2d788d4432cfa89851c9b928c9f30aa (diff) | |
| download | qpid-python-558e92d6c9cf8dfb875c1250ab8fe1cefaf30b05.tar.gz | |
DumpClient send connections & session IDs to new members.
git-svn-id: https://svn.apache.org/repos/asf/incubator/qpid/trunk/qpid@697446 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'cpp/src/qpid/broker')
| -rw-r--r-- | cpp/src/qpid/broker/Connection.cpp | 6 | ||||
| -rw-r--r-- | cpp/src/qpid/broker/Connection.h | 33 |
2 files changed, 28 insertions, 11 deletions
diff --git a/cpp/src/qpid/broker/Connection.cpp b/cpp/src/qpid/broker/Connection.cpp index ac4ec81cb9..17f58adc78 100644 --- a/cpp/src/qpid/broker/Connection.cpp +++ b/cpp/src/qpid/broker/Connection.cpp @@ -165,6 +165,12 @@ void Connection::close( getOutput().close(); } +// Send a close to the client but keep the channels. Used by cluster. +void Connection::sendClose() { + adapter.close(200, "OK", 0, 0); + getOutput().close(); +} + void Connection::idleOut(){} void Connection::idleIn(){} diff --git a/cpp/src/qpid/broker/Connection.h b/cpp/src/qpid/broker/Connection.h index b81f1eda21..cf0b4bc5c0 100644 --- a/cpp/src/qpid/broker/Connection.h +++ b/cpp/src/qpid/broker/Connection.h @@ -28,25 +28,29 @@ #include <boost/ptr_container/ptr_map.hpp> -#include "qpid/framing/AMQFrame.h" -#include "qpid/framing/AMQP_ServerOperations.h" -#include "qpid/framing/AMQP_ClientProxy.h" -#include "qpid/sys/AggregateOutput.h" -#include "qpid/sys/ConnectionOutputHandler.h" -#include "qpid/sys/ConnectionInputHandler.h" -#include "qpid/sys/TimeoutHandler.h" -#include "qpid/framing/ProtocolVersion.h" #include "Broker.h" -#include "qpid/sys/Socket.h" -#include "qpid/Exception.h" #include "ConnectionHandler.h" #include "ConnectionState.h" #include "SessionHandler.h" -#include "qpid/management/Manageable.h" #include "qmf/org/apache/qpid/broker/Connection.h" +#include "qpid/Exception.h" #include "qpid/RefCounted.h" +#include "qpid/framing/AMQFrame.h" +#include "qpid/framing/AMQP_ClientProxy.h" +#include "qpid/framing/AMQP_ServerOperations.h" +#include "qpid/framing/ProtocolVersion.h" +#include "qpid/management/Manageable.h" +#include "qpid/ptr_map.h" +#include "qpid/sys/AggregateOutput.h" +#include "qpid/sys/ConnectionInputHandler.h" +#include "qpid/sys/ConnectionOutputHandler.h" +#include "qpid/sys/Socket.h" +#include "qpid/sys/TimeoutHandler.h" #include <boost/ptr_container/ptr_map.hpp> +#include <boost/bind.hpp> + +#include <algorithm> namespace qpid { namespace broker { @@ -93,6 +97,13 @@ class Connection : public sys::ConnectionInputHandler, void notifyConnectionForced(const std::string& text); void setUserId(const string& uid); + template <class F> void eachSessionHandler(const F& f) { + for (ChannelMap::iterator i = channels.begin(); i != channels.end(); ++i) + f(*ptr_map_ptr(i)); + } + + void sendClose(); + private: typedef boost::ptr_map<framing::ChannelId, SessionHandler> ChannelMap; typedef std::vector<Queue::shared_ptr>::iterator queue_iterator; |
