[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