diff options
| author | Carl C. Trieloff <cctrieloff@apache.org> | 2008-04-24 15:24:51 +0000 |
|---|---|---|
| committer | Carl C. Trieloff <cctrieloff@apache.org> | 2008-04-24 15:24:51 +0000 |
| commit | 841ceb18e777e49ccddc189419265f5e0b20fedf (patch) | |
| tree | cdd95ace16bdd35e40970ee6861f8b8e1c67c0ea /python/qpid | |
| parent | d42b7bc8854f30c397c65641bc7adaeb21808e21 (diff) | |
| download | qpid-python-841ceb18e777e49ccddc189419265f5e0b20fedf.tar.gz | |
QPID-953 from tross
git-svn-id: https://svn.apache.org/repos/asf/incubator/qpid/trunk/qpid@651290 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'python/qpid')
| -rw-r--r-- | python/qpid/management.py | 17 | ||||
| -rw-r--r-- | python/qpid/managementdata.py | 10 |
2 files changed, 21 insertions, 6 deletions
diff --git a/python/qpid/management.py b/python/qpid/management.py index 3a7a564e19..3f8d3c9cfe 100644 --- a/python/qpid/management.py +++ b/python/qpid/management.py @@ -85,6 +85,8 @@ class managementChannel: """ Given a channel on an established AMQP broker connection, this method opens a session and performs all of the declarations and bindings needed to participate in the management protocol. """ + self.enabled = True + self.ssn = ssn self.sessionId = ssn.name self.topicName = "mgmt-%s" % self.sessionId self.replyName = "repl-%s" % self.sessionId @@ -115,16 +117,24 @@ class managementChannel: ssn.message_flow (destination="rdest", unit=0, value=0xFFFFFFFF) ssn.message_flow (destination="rdest", unit=1, value=0xFFFFFFFF) + def shutdown (self): + self.enabled = False + self.ssn.message_cancel (destination="tdest") + self.ssn.message_cancel (destination="rdest") + def topicCb (self, msg): """ Receive messages via the topic queue on this channel. """ - self.tcb (self, msg) + if self.enabled: + self.tcb (self, msg) def replyCb (self, msg): """ Receive messages via the reply queue on this channel. """ - self.rcb (self, msg) + if self.enabled: + self.rcb (self, msg) def send (self, exchange, msg): - self.qpidChannel.message_transfer (destination=exchange, message=msg) + if self.enabled: + self.qpidChannel.message_transfer (destination=exchange, message=msg) def accept (self, msg): self.qpidChannel.message_accept(RangedSet(msg.id)) @@ -193,6 +203,7 @@ class managementClient: def removeChannel (self, mch): """ Remove a previously added channel from management. """ + mch.shutdown () self.channels.remove (mch) def callMethod (self, channel, userSequence, objId, className, methodName, args=None): diff --git a/python/qpid/managementdata.py b/python/qpid/managementdata.py index 327ae96a26..c908483354 100644 --- a/python/qpid/managementdata.py +++ b/python/qpid/managementdata.py @@ -22,7 +22,7 @@ import qpid import socket import struct -import uuid +import os from qpid.management import managementChannel, managementClient from threading import Lock from disp import Display @@ -171,6 +171,7 @@ class ManagementData: self.lastUnit = None self.methodSeq = 1 self.methodsPending = {} + self.sessionId = "%s.%d" % (os.uname()[1], os.getpid()) self.broker = Broker (host) self.conn = Connection (connect (self.broker.host, self.broker.port), self.spec) @@ -179,10 +180,10 @@ class ManagementData: self.mclient = managementClient (self.spec, self.ctrlHandler, self.configHandler, self.instHandler, self.methodReply) self.mclient.schemaListener (self.schemaHandler) - self.mch = self.mclient.addChannel (self.conn.session(str(uuid.uuid4()))) + self.mch = self.mclient.addChannel (self.conn.session(self.sessionId)) def close (self): - self.mclient.removeChannel (self.mch) + pass def refName (self, oid): if oid == 0: @@ -626,3 +627,6 @@ class ManagementData: methodName = tokens[1] args = tokens[2:] self.callMethod (userOid, methodName, args) + + def do_exit (self): + self.mclient.removeChannel (self.mch) |
