From fc8f2c93b118b3026ab2f5274127b41938d5590f Mon Sep 17 00:00:00 2001 From: Ted Ross Date: Fri, 11 Feb 2011 01:19:12 +0000 Subject: 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 --- cpp/bindings/qmf2/examples/python/agent.py | 73 +++++++++++++++++--------- cpp/bindings/qmf2/examples/ruby/find_agents.rb | 2 +- cpp/bindings/qmf2/python/qmf2.py | 10 ++++ cpp/bindings/qmf2/ruby/qmf2.rb | 8 +++ 4 files changed, 66 insertions(+), 27 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)) @@ -145,12 +159,19 @@ class ExampleAgent(AgentHandler): self.sch_child = Schema(SCHEMA_TYPE_DATA, package, "child") 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): diff --git a/cpp/bindings/qmf2/examples/ruby/find_agents.rb b/cpp/bindings/qmf2/examples/ruby/find_agents.rb index 712e5007be..41de7e5abe 100644 --- a/cpp/bindings/qmf2/examples/ruby/find_agents.rb +++ b/cpp/bindings/qmf2/examples/ruby/find_agents.rb @@ -27,7 +27,7 @@ class FindAgents < Qmf2::ConsoleHandler end def agent_added(agent) - puts "Agent Added: #{agent.to_s}" + puts "Agent Added: #{agent.name}" end def agent_deleted(agent, reason) diff --git a/cpp/bindings/qmf2/python/qmf2.py b/cpp/bindings/qmf2/python/qmf2.py index 61a5453f8e..2b8ece9dde 100644 --- a/cpp/bindings/qmf2/python/qmf2.py +++ b/cpp/bindings/qmf2/python/qmf2.py @@ -373,6 +373,16 @@ class AgentSession(object): else: self._impl.raiseException(handle, data) + def raiseEvent(self, data, severity=None): + """ + """ + if not severity: + self._impl.raiseEvent(data._impl) + else: + if (severity.__class__ != int and severity.__class__ != long) or severity < 0 or severity > 7: + raise Exception("Severity must be an int between 0..7") + self._impl.raiseEvent(data._impl, severity); + #=================================================================================================== # AGENT PROXY diff --git a/cpp/bindings/qmf2/ruby/qmf2.rb b/cpp/bindings/qmf2/ruby/qmf2.rb index 6d1741ebc0..c14ecba4e1 100644 --- a/cpp/bindings/qmf2/ruby/qmf2.rb +++ b/cpp/bindings/qmf2/ruby/qmf2.rb @@ -433,6 +433,14 @@ module Qmf2 def del_data(addr) @impl.del_data(addr.impl) end + + def raise_event(data, severity=nil) + if !severity + @impl.raiseEvent(data.impl) + else + @impl.raiseEvent(data.impl, severity) + end + end end ##============================================================================== -- cgit v1.2.1