summaryrefslogtreecommitdiff
path: root/python/qpid
diff options
context:
space:
mode:
authorCarl C. Trieloff <cctrieloff@apache.org>2008-04-24 15:24:51 +0000
committerCarl C. Trieloff <cctrieloff@apache.org>2008-04-24 15:24:51 +0000
commit841ceb18e777e49ccddc189419265f5e0b20fedf (patch)
treecdd95ace16bdd35e40970ee6861f8b8e1c67c0ea /python/qpid
parentd42b7bc8854f30c397c65641bc7adaeb21808e21 (diff)
downloadqpid-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.py17
-rw-r--r--python/qpid/managementdata.py10
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)