diff options
| author | Gordon Sim <gsim@apache.org> | 2007-04-16 11:32:43 +0000 |
|---|---|---|
| committer | Gordon Sim <gsim@apache.org> | 2007-04-16 11:32:43 +0000 |
| commit | 1632488ab1ff6270b4ef37974b5de2b422365bdb (patch) | |
| tree | e2e4255e3e42eb5f61ca6988d0f11e68f6befee4 /cpp/src/qpid/client/Connection.h | |
| parent | fb707cada1bc9c4372d9568d4dd16b511178a958 (diff) | |
| download | qpid-python-1632488ab1ff6270b4ef37974b5de2b422365bdb.tar.gz | |
Fixes QPID-303 and QPID-409.
* qpid/client/Connector: atomic test-and-set for closed, don't try to close if already closed
* qpid/client/Connection: atomic test-and-set for isOpen, don't send requests to broker on shutdown
git-svn-id: https://svn.apache.org/repos/asf/incubator/qpid/trunk/qpid@529209 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'cpp/src/qpid/client/Connection.h')
| -rw-r--r-- | cpp/src/qpid/client/Connection.h | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/cpp/src/qpid/client/Connection.h b/cpp/src/qpid/client/Connection.h index 071a1d9446..c3b9aa33d0 100644 --- a/cpp/src/qpid/client/Connection.h +++ b/cpp/src/qpid/client/Connection.h @@ -26,6 +26,7 @@ #include "qpid/QpidError.h" #include "ClientChannel.h" #include "Connector.h" +#include "qpid/sys/Mutex.h" #include "qpid/sys/ShutdownHandler.h" #include "qpid/sys/TimeoutHandler.h" @@ -81,13 +82,16 @@ class Connection : public ConnectionForChannel Connector defaultConnector; Connector* connector; framing::OutputHandler* out; - volatile bool isOpen; + bool isOpen; + sys::Mutex shutdownLock; Channel channel0; bool debug; void erase(framing::ChannelId); void channelException( Channel&, framing::AMQMethodBody*, const QpidError&); + void closeChannels(); + bool markClosed(); // TODO aconway 2007-01-26: too many friendships, untagle these classes. friend class Channel; |
