[rhmessaging-commits] rhmessaging commits: r1746 - mgmt/basil/python/basil.

rhmessaging-commits at lists.jboss.org rhmessaging-commits at lists.jboss.org
Sat Mar 1 15:00:43 EST 2008


Author: justi9
Date: 2008-03-01 15:00:42 -0500 (Sat, 01 Mar 2008)
New Revision: 1746

Modified:
   mgmt/basil/python/basil/__init__.py
Log:
Add a handler for method callbacks

Modified: mgmt/basil/python/basil/__init__.py
===================================================================
--- mgmt/basil/python/basil/__init__.py	2008-03-01 19:26:44 UTC (rev 1745)
+++ mgmt/basil/python/basil/__init__.py	2008-03-01 20:00:42 UTC (rev 1746)
@@ -13,7 +13,7 @@
         self.packages = list()
 
         self.method_sequence = 1
-        self.outstanding_calls = dict()
+        self.method_calls = dict() # seq => (object, name, callback, kwargs)
 
         self.lock = Lock()
 
@@ -43,6 +43,18 @@
         finally:
             self.lock.release()
 
+    def on_callback(self, context_id, seq, status_code, status_text, args):
+        self.lock.acquire()
+        try:
+            object, name, callback, kwargs = self.method_calls.pop(seq)
+        finally:
+            self.lock.release()
+
+        if callback:
+            callback(status_code, status_text, args)
+        else:
+            print object, name, "->", status_code, status_text, args
+
     def get_package(self, class_info):
         name = class_info[0].replace(".", "_")
 
@@ -114,7 +126,7 @@
             setattr(self.python_class, spec[0], None)
 
         for name in methods:
-            def meth(this, callback, **kwargs):
+            def meth(this, callback=None, **kwargs):
                 this.basil_call(name, callback, **kwargs)
             setattr(self.python_class, name, meth)
 
@@ -171,7 +183,7 @@
         conn = model.connections[self.basil_context_id]
         client, chan = conn.client, conn.chan
 
-        model.outstanding_calls[seq] = callback
+        model.method_calls[seq] = (self, name, callback, kwargs)
 
         client.method(chan, seq, self.basil_object_id, self.basil_class_info,
                       name, kwargs)
@@ -190,7 +202,7 @@
                                        None, 
                                        self.model.on_config,
                                        self.model.on_metric,
-                                       self.context_id)
+                                       self.model.on_callback)
         self.client.schemaListener(self.model.on_schema)
 
         self.chan = None
@@ -209,4 +221,3 @@
 
     def close(self):
         self.client.removeChannel(self.chan)
-        self.client.close()




More information about the rhmessaging-commits mailing list