summaryrefslogtreecommitdiff
path: root/cpp/bindings/qmf2/examples/python
diff options
context:
space:
mode:
authorTed Ross <tross@apache.org>2011-02-11 01:19:12 +0000
committerTed Ross <tross@apache.org>2011-02-11 01:19:12 +0000
commitfc8f2c93b118b3026ab2f5274127b41938d5590f (patch)
tree6e2737131084ff9fc5673aa2e9736030a216ffd7 /cpp/bindings/qmf2/examples/python
parent3cdd83cadf8010310ddcf54f1724c77001d2d02c (diff)
downloadqpid-python-fc8f2c93b118b3026ab2f5274127b41938d5590f.tar.gz
QPID-3046
Added missing wrapper functions for AgentSession::raiseEvent in Ruby and Python Added a raised event in the Python agent example git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk/qpid@1069654 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'cpp/bindings/qmf2/examples/python')
-rwxr-xr-xcpp/bindings/qmf2/examples/python/agent.py73
1 files changed, 47 insertions, 26 deletions
diff --git a/cpp/bindings/qmf2/examples/python/agent.py b/cpp/bindings/qmf2/examples/python/agent.py
index 66b7dbdc58..b24890f531 100755
--- a/cpp/bindings/qmf2/examples/python/agent.py
+++ b/cpp/bindings/qmf2/examples/python/agent.py
@@ -69,32 +69,41 @@ class ExampleAgent(AgentHandler):
if addr == self.controlAddr:
self.control.methodCount += 1
- if methodName == "stop":
- self.session.methodSuccess(handle)
- self.cancel()
-
- elif methodName == "echo":
- handle.addReturnArgument("sequence", args["sequence"])
- handle.addReturnArgument("map", args["map"])
- self.session.methodSuccess(handle)
-
- elif methodName == "fail":
- if args['useString']:
- self.session.raiseException(handle, args['stringVal'])
- else:
- ex = Data(self.sch_exception)
- ex.whatHappened = "It Failed"
- ex.howBad = 75
- ex.details = args['details']
- self.session.raiseException(handle, ex)
-
- elif methodName == "create_child":
- name = args['name']
- child = Data(self.sch_child)
- child.name = name
- addr = self.session.addData(child, name)
- handle.addReturnArgument("childAddr", addr.asMap())
- self.session.methodSuccess(handle)
+ try:
+ if methodName == "stop":
+ self.session.methodSuccess(handle)
+ self.cancel()
+
+ elif methodName == "echo":
+ handle.addReturnArgument("sequence", args["sequence"])
+ handle.addReturnArgument("map", args["map"])
+ self.session.methodSuccess(handle)
+
+ elif methodName == "event":
+ ev = Data(self.sch_event)
+ ev.text = args['text']
+ self.session.raiseEvent(ev, args['severity'])
+ self.session.methodSuccess(handle)
+
+ elif methodName == "fail":
+ if args['useString']:
+ self.session.raiseException(handle, args['stringVal'])
+ else:
+ ex = Data(self.sch_exception)
+ ex.whatHappened = "It Failed"
+ ex.howBad = 75
+ ex.details = args['details']
+ self.session.raiseException(handle, ex)
+
+ elif methodName == "create_child":
+ name = args['name']
+ child = Data(self.sch_child)
+ child.name = name
+ addr = self.session.addData(child, name)
+ handle.addReturnArgument("childAddr", addr.asMap())
+ self.session.methodSuccess(handle)
+ except BaseException, e:
+ self.session.raiseException(handle, "%r" % e)
def setupSchema(self):
@@ -128,6 +137,11 @@ class ExampleAgent(AgentHandler):
echoMethod.addArgument(SchemaProperty("map", SCHEMA_DATA_MAP, direction=DIR_IN_OUT))
self.sch_control.addMethod(echoMethod)
+ eventMethod = SchemaMethod("event", desc="Raise an Event")
+ eventMethod.addArgument(SchemaProperty("text", SCHEMA_DATA_STRING, direction=DIR_IN))
+ eventMethod.addArgument(SchemaProperty("severity", SCHEMA_DATA_INT, direction=DIR_IN))
+ self.sch_control.addMethod(eventMethod)
+
failMethod = SchemaMethod("fail", desc="Expected to Fail")
failMethod.addArgument(SchemaProperty("useString", SCHEMA_DATA_BOOL, direction=DIR_IN))
failMethod.addArgument(SchemaProperty("stringVal", SCHEMA_DATA_STRING, direction=DIR_IN))
@@ -146,11 +160,18 @@ class ExampleAgent(AgentHandler):
self.sch_child.addProperty(SchemaProperty("name", SCHEMA_DATA_STRING))
##
+ ## Declare the event class
+ ##
+ self.sch_event = Schema(SCHEMA_TYPE_EVENT, package, "event")
+ self.sch_event.addProperty(SchemaProperty("text", SCHEMA_DATA_STRING))
+
+ ##
## Register our schemata with the agent session.
##
self.session.registerSchema(self.sch_exception)
self.session.registerSchema(self.sch_control)
self.session.registerSchema(self.sch_child)
+ self.session.registerSchema(self.sch_event)
def populateData(self):