summaryrefslogtreecommitdiff
path: root/cpp/src/qpid/client/Connection.h
diff options
context:
space:
mode:
authorGordon Sim <gsim@apache.org>2007-04-16 11:32:43 +0000
committerGordon Sim <gsim@apache.org>2007-04-16 11:32:43 +0000
commit1632488ab1ff6270b4ef37974b5de2b422365bdb (patch)
treee2e4255e3e42eb5f61ca6988d0f11e68f6befee4 /cpp/src/qpid/client/Connection.h
parentfb707cada1bc9c4372d9568d4dd16b511178a958 (diff)
downloadqpid-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.h6
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;