From: Frederic PAUT Date: Tue, 28 May 2013 13:35:59 +0000 (+0200) Subject: Future : Server side, using 'Future' to create service and adding agents X-Git-Tag: upstream/0.6.1~45^2~1 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=66fa6484a72da1ffd510b6e14af360699a1ada6f;hp=58c62a75168a9f8f0549436b5b9709f28a4d1d20;p=contrib%2Fcloudeebus.git Future : Server side, using 'Future' to create service and adding agents In client side, using 'Future' to set callbacks --- diff --git a/cloudeebus/cloudeebus.js b/cloudeebus/cloudeebus.js index 30e3286..12cdaac 100644 --- a/cloudeebus/cloudeebus.js +++ b/cloudeebus/cloudeebus.js @@ -149,19 +149,34 @@ cloudeebus.BusConnection.prototype.getObject = function(busName, objectPath, int }; -cloudeebus.BusConnection.prototype.addService = function(serviceName, successCB, errorCB) { +cloudeebus.BusConnection.prototype.addService = function(serviceName) { var self = this; - cloudeebusService = new cloudeebus.Service(this.wampSession, this, serviceName); - function busServiceAddedSuccessCB(service) { - self.service = cloudeebusService; - if (successCB) - successCB(cloudeebusService); - } + var future = new cloudeebus.Future(function (resolver) { + cloudeebusService = new cloudeebus.Service(self.wampSession, self, serviceName); + + function busServiceAddedSuccessCB(service) { + self.service = cloudeebusService; + try { + var result = [cloudeebusService]; + resolver.accept(result[0], true); + } + catch (e) { + cloudeebus.log("Method callback exception: " + e); + resolver.reject(e, true); + } + } + + function busServiceErrorSuccessCB(error) { + self.service = null; + resolver.reject(error, true); + } + + cloudeebusService.add(this).then(busServiceAddedSuccessCB, busServiceErrorSuccessCB); + }); - cloudeebusService.add(busServiceAddedSuccessCB, errorCB); - return cloudeebusService; + return future; }; cloudeebus.BusConnection.prototype.removeService = function(serviceName, successCB, errorCB) { @@ -190,27 +205,35 @@ cloudeebus.Service = function(session, busConnection, name) { return this; }; -cloudeebus.Service.prototype.add = function(successCB, errorCB) { +cloudeebus.Service.prototype.add = function(future) { var self = this; + self.future = future; function ServiceAddedSuccessCB(serviceName) { - if (successCB) { - try { - successCB(self); - } - catch (e) { - alert("Exception adding service " + serviceName + " : " + e); - } + try { // calling dbus hook object function for un-translated types + var resolver = self.future.resolver; + var result = [self]; + resolver.accept(result[0], true); } + catch (e) { + cloudeebus.log("Method callback exception: " + e); + resolver.reject(e, true); + } } + function ServiceAddedErrorCB(error) { + cloudeebus.log("Error adding service method: " + self.name + ", error: " + error.desc); + self.future.resolver.reject(error.desc, true); + } + var arglist = [ this.busConnection, this.name ]; // call dbusSend with bus type, destination, object, message and arguments - this.wampSession.call("serviceAdd", arglist).then(ServiceAddedSuccessCB, errorCB); + this.wampSession.call("serviceAdd", arglist).then(ServiceAddedSuccessCB, ServiceAddedErrorCB); + return future; }; cloudeebus.Service.prototype.remove = function(successCB, errorCB) { diff --git a/doc/agent/client.html b/doc/agent/client.html index f87c484..27ddc6e 100644 --- a/doc/agent/client.html +++ b/doc/agent/client.html @@ -26,6 +26,7 @@ var manifest = { ] }; + var sampleProxy = null; cloudeebus.log = function(msg) { @@ -53,14 +54,14 @@ function gotDivResult(result) { Divorced: 0, Friends: ["Donald", "Dingo"], Others: [""]}; - sampleProxy.Variant(dictionary,gotDictResult,errorCB); + sampleProxy.Variant(dictionary).then(gotDictResult,errorCB); // sampleProxy.Release(); } function gotAddResult(result) { cloudeebus.log("gotAddResult: " + result); logCB('Divide by 3.33'); - sampleProxy.Div(result,3.33,gotDivResult,errorCB); + sampleProxy.Div(result,3.33).then(gotDivResult,errorCB); } function signalHandler(result) { @@ -76,11 +77,9 @@ function gotProxy(proxy) { } else { proxy.connectToSignal("org.cloudeebus.Sample1", "ResultChanged", signalHandler); logCB('Addition'); - proxy.Add(4,5,gotAddResult,errorCB); - return; for (var i=-10; i<10; i++) - proxy.Add(i,i*2,gotAddResult,errorCB); + proxy.Add(i,i*2).then(gotAddResult,errorCB); } } diff --git a/doc/agent/server.html b/doc/agent/server.html index 849d1d2..8ce51dd 100644 --- a/doc/agent/server.html +++ b/doc/agent/server.html @@ -18,6 +18,7 @@

cloudeebus



- +-