From: Frederic PAUT Date: Thu, 28 Mar 2013 11:57:30 +0000 (+0100) Subject: adding signal emission X-Git-Tag: upstream/0.6.1~58^2 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=5d8246b35b15c7616d25c4cfdd44a6485a738256;p=contrib%2Fcloudeebus.git adding signal emission --- diff --git a/cloudeebus/cloudeebus.js b/cloudeebus/cloudeebus.js index 6c01414..7e9d55c 100644 --- a/cloudeebus/cloudeebus.js +++ b/cloudeebus/cloudeebus.js @@ -270,6 +270,16 @@ cloudeebus.Service.prototype.returnMethod = function(methodId, callIndex, succes this.wampSession.call("returnMethod", arglist).then(successCB, errorCB); }; +cloudeebus.Service.prototype.emitSignal = function(objectPath, signalName, result, successCB, errorCB) { + var arglist = [ + objectPath, + signalName, + result + ]; + + this.wampSession.call("emitSignal", arglist).then(successCB, errorCB); +}; + /*****************************************************************************/ diff --git a/cloudeebus/cloudeebus.py b/cloudeebus/cloudeebus.py index 2a75452..0f85747 100755 --- a/cloudeebus/cloudeebus.py +++ b/cloudeebus/cloudeebus.py @@ -229,6 +229,8 @@ class XmlCbParser: # The target object of the parser attrib['type']) return if (self.current == 'signal'): + if (attrib.has_key('name') == False): + attrib['name'] = 'value' self.dynDBusClass.add_signature(attrib['name'], 'in', attrib['type']) return @@ -488,6 +490,21 @@ class CloudeebusService: @exportRpc + def emitSignal(self, list): + ''' + arguments: agentObjectPath, signalName, result (to emit) + ''' + objectPath = list[0] + className = re.sub('/', '_', objectPath[1:]) + signalName = list[1] + result = list[2] + if (self.serviceAgents.has_key(className) == True): + exe_str = "self.serviceAgents['"+ className +"']."+ signalName + "(" + str(result) + ")" + eval(exe_str, self.globalCtx, self.localCtx) + else: + raise Exception("No object path " + objectPath) + + @exportRpc def returnMethod(self, list): ''' arguments: methodId, callIndex, success (=true, error otherwise), result (to return) diff --git a/doc/agent/client.html b/doc/agent/client.html index 977e84c..c4afa73 100644 --- a/doc/agent/client.html +++ b/doc/agent/client.html @@ -45,11 +45,17 @@ function gotAddResult(aSum) { // sampleProxy.Release(); } +function signalHandler(aSum) { + cloudeebus.log("signal 'ResultChanged': " + aSum); +} + function gotProxy(proxy) { logCB(proxy); for (var i=-10; i<10; i++) proxy.Add(i,i*2,gotAddResult,errorCB); sampleProxy = proxy; + sampleProxy.connectToSignal("org.cloudeebus.Sample", "ResultChanged", signalHandler); + } function connectSuccess() { diff --git a/doc/agent/server.html b/doc/agent/server.html index d39022f..3d5e554 100644 --- a/doc/agent/server.html +++ b/doc/agent/server.html @@ -17,7 +17,7 @@

cloudeebus


-