Author: nsantos
Date: Thu May  1 07:36:03 2008
New Revision: 652535

URL: http://svn.apache.org/viewvc?rev=652535&view=rev
Log:
applying Ted Ross's patch to handle unicode encoding and management message 
ordering issues

Modified:
    incubator/qpid/trunk/qpid/python/qpid/management.py

Modified: incubator/qpid/trunk/qpid/python/qpid/management.py
URL: 
http://svn.apache.org/viewvc/incubator/qpid/trunk/qpid/python/qpid/management.py?rev=652535&r1=652534&r2=652535&view=diff
==============================================================================
--- incubator/qpid/trunk/qpid/python/qpid/management.py (original)
+++ incubator/qpid/trunk/qpid/python/qpid/management.py Thu May  1 07:36:03 2008
@@ -99,8 +99,6 @@
     ssn.queue_declare (queue=self.topicName, exclusive=True, auto_delete=True)
     ssn.queue_declare (queue=self.replyName, exclusive=True, auto_delete=True)
 
-    ssn.exchange_bind (exchange="qpid.management",
-                       queue=self.topicName, binding_key="mgmt.#")
     ssn.exchange_bind (exchange="amq.direct",
                        queue=self.replyName, binding_key=self.replyName)
     ssn.message_subscribe (queue=self.topicName, destination="tdest")
@@ -383,7 +381,7 @@
     elif typecode == 5:
       data = codec.read_uint8 ()
     elif typecode == 6:
-      data = codec.read_str8 ()
+      data = str (codec.read_str8 ())
     elif typecode == 7:
       data = codec.read_vbin32 ()
     elif typecode == 8:  # ABSTIME
@@ -422,10 +420,13 @@
     if ch.reqsOutstanding == 0:
       if self.ctrlCb != None:
         self.ctrlCb (ch.context, self.CTRL_SCHEMA_LOADED, None)
+      ch.ssn.exchange_bind (exchange="qpid.management",
+                            queue=ch.topicName, binding_key="mgmt.#")
+
 
   def handleMethodReply (self, ch, codec, sequence):
     status = codec.read_uint32 ()
-    sText  = codec.read_str8 ()
+    sText  = str (codec.read_str8 ())
 
     data = self.seqMgr.release (sequence)
     if data == None:
@@ -461,7 +462,7 @@
 
   def handleCommandComplete (self, ch, codec, seq):
     code = codec.read_uint32 ()
-    text = codec.read_str8 ()
+    text = str (codec.read_str8 ())
     data = (seq, code, text)
     context = self.seqMgr.release (seq)
     if context == "outstanding":
@@ -488,7 +489,7 @@
     ch.send ("qpid.management", smsg)
 
   def handlePackageInd (self, ch, codec):
-    pname = codec.read_str8 ()
+    pname = str (codec.read_str8 ())
     if pname not in self.packages:
       self.packages[pname] = {}
 
@@ -502,8 +503,8 @@
       ch.send ("qpid.management", smsg)
 
   def handleClassInd (self, ch, codec):
-    pname = codec.read_str8 ()
-    cname = codec.read_str8 ()
+    pname = str (codec.read_str8 ())
+    cname = str (codec.read_str8 ())
     hash  = codec.read_bin128   ()
     if pname not in self.packages:
       return
@@ -523,8 +524,8 @@
   def parseSchema (self, ch, codec):
     """ Parse a received schema-description message. """
     self.decOutstanding (ch)
-    packageName = codec.read_str8 ()
-    className   = codec.read_str8 ()
+    packageName = str (codec.read_str8 ())
+    className   = str (codec.read_str8 ())
     hash        = codec.read_bin128 ()
     configCount = codec.read_uint16 ()
     instCount   = codec.read_uint16 ()
@@ -550,7 +551,7 @@
 
     for idx in range (configCount):
       ft = codec.read_map ()
-      name   = ft["name"]
+      name   = str (ft["name"])
       type   = ft["type"]
       access = ft["access"]
       index  = ft["index"]
@@ -562,7 +563,7 @@
 
       for key, value in ft.items ():
         if   key == "unit":
-          unit = value
+          unit = str (value)
         elif key == "min":
           min = value
         elif key == "max":
@@ -570,42 +571,42 @@
         elif key == "maxlen":
           maxlen = value
         elif key == "desc":
-          desc = value
+          desc = str (value)
 
       config = (name, type, unit, desc, access, index, min, max, maxlen)
       configs.append (config)
 
     for idx in range (instCount):
       ft = codec.read_map ()
-      name   = ft["name"]
+      name   = str (ft["name"])
       type   = ft["type"]
       unit   = None
       desc   = None
 
       for key, value in ft.items ():
         if   key == "unit":
-          unit = value
+          unit = str (value)
         elif key == "desc":
-          desc = value
+          desc = str (value)
 
       inst = (name, type, unit, desc)
       insts.append (inst)
 
     for idx in range (methodCount):
       ft = codec.read_map ()
-      mname    = ft["name"]
+      mname    = str (ft["name"])
       argCount = ft["argCount"]
       if "desc" in ft:
-        mdesc = ft["desc"]
+        mdesc = str (ft["desc"])
       else:
         mdesc = None
 
       args = []
       for aidx in range (argCount):
         ft = codec.read_map ()
-        name    = ft["name"]
+        name    = str (ft["name"])
         type    = ft["type"]
-        dir     = ft["dir"].upper ()
+        dir     = str (ft["dir"].upper ())
         unit    = None
         min     = None
         max     = None
@@ -615,7 +616,7 @@
 
         for key, value in ft.items ():
           if   key == "unit":
-            unit = value
+            unit = str (value)
           elif key == "min":
             min = value
           elif key == "max":
@@ -623,9 +624,9 @@
           elif key == "maxlen":
             maxlen = value
           elif key == "desc":
-            desc = value
+            desc = str (value)
           elif key == "default":
-            default = value
+            default = str (value)
 
         arg = (name, type, dir, unit, desc, min, max, maxlen, default)
         args.append (arg)
@@ -648,8 +649,8 @@
     if cls == 'I' and self.instCb == None:
       return
 
-    packageName = codec.read_str8 ()
-    className   = codec.read_str8 ()
+    packageName = str (codec.read_str8 ())
+    className   = str (codec.read_str8 ())
     hash        = codec.read_bin128 ()
     classKey    = (packageName, className, hash)
 


Reply via email to