X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=cloudeebus%2Fcloudeebus.js;h=a14a87d830e2eab870d1bee5a97bd8ea58630d5b;hb=eeabce64098388e465c90c039e89687dae4ca1fd;hp=60568119a2cd42892969e2090e2692564b56ccaf;hpb=579f53f16e834f653a928842fa2a53c7618ee318;p=contrib%2Fcloudeebus.git diff --git a/cloudeebus/cloudeebus.js b/cloudeebus/cloudeebus.js index 6056811..a14a87d 100644 --- a/cloudeebus/cloudeebus.js +++ b/cloudeebus/cloudeebus.js @@ -46,16 +46,18 @@ cloudeebus.log = function(msg) { cloudeebus.getError = function(error) { if (error.desc && error.uri) - return error.desc + " : " + error.uri; + return error.desc + " : " + error.uri; // Python exception (cloudeebus.py) if (error.desc) return error.desc; if (error.uri) return error.uri; if (error.name && error.message) - return error.name + " : " + error.message; + return error.name + " : " + error.message; // Javascript exception if (error.message) return error.message; - return error; + if (error.name) + return error.name; + return error; // Autobahn error }; cloudeebus.versionCheck = function(version) { @@ -108,11 +110,13 @@ cloudeebus.connect = function(uri, manifest, successCB, errorCB) { function onWAMPSessionConnectedCB(session) { cloudeebus.wampSession = session; - if (manifest) + if (manifest) { cloudeebus.wampSession.authreq( manifest.name, - {permissions: manifest.permissions} + {permissions: manifest.permissions, + services: manifest.services} ).then(onWAMPSessionChallengedCB, onWAMPSessionAuthErrorCB); + } else cloudeebus.wampSession.authreq().then(function() { cloudeebus.wampSession.auth().then(onWAMPSessionAuthenticatedCB, onWAMPSessionAuthErrorCB); @@ -164,12 +168,15 @@ cloudeebus.BusConnection.prototype.getObject = function(busName, objectPath, int cloudeebus.BusConnection.prototype.addService = function(serviceName) { var self = this; + + if (!serviceName) + serviceName = ""; var promise = new cloudeebus.Promise(function (resolver) { var cloudeebusService = new cloudeebus.Service(self.wampSession, self, serviceName); function ServiceAddedSuccessCB(serviceName) { - try { // calling dbus hook object function for un-translated types + try { cloudeebusService.isCreated = true; resolver.fulfill(cloudeebusService, true); } @@ -199,8 +206,9 @@ cloudeebus.BusConnection.prototype.addService = function(serviceName) { }; + /*****************************************************************************/ -//Generic definition for an agent. An agent need : +//Generic definition for an agent. An agent needs : //srvDbusName : the DBus parent service //objPath : a DBus path to access it //jsHdl : a Javascript handler to process methods, @@ -224,6 +232,7 @@ cloudeebus.Service = function(session, busConnection, name) { return this; }; + cloudeebus.Service.prototype.remove = function() { var self = this; @@ -262,6 +271,7 @@ cloudeebus.Service.prototype.remove = function() { return promise; }; + cloudeebus.Service.prototype._searchMethod = function(ifName, method, objectJS) { var funcToCall = null; @@ -279,6 +289,7 @@ cloudeebus.Service.prototype._searchMethod = function(ifName, method, objectJS) return funcToCall; }; + cloudeebus.Service.prototype._addMethod = function(ifName, method, agent) { var service = this; @@ -305,11 +316,11 @@ cloudeebus.Service.prototype._addMethod = function(ifName, method, agent) { } }; agent.jsHdl.methodId[agent.objectPath].push(methodId); - cloudeebus.log("subscribe " + methodId); this.wampSession.subscribe(methodId, agent.jsHdl.wrapperFunc[method]); } }; + cloudeebus.Service.prototype._addSignal = function(ifName, signal, agent) { var service = this; var methodExist = false; @@ -332,6 +343,7 @@ cloudeebus.Service.prototype._addSignal = function(ifName, signal, agent) { cloudeebus.log("Can not create new method to emit signal '" + signal + "' in object JS this method already exist!"); }; + cloudeebus.Service.prototype._createWrapper = function(agent) { var self = this; var parser = new DOMParser(); @@ -357,6 +369,7 @@ cloudeebus.Service.prototype._createWrapper = function(agent) { } }; + cloudeebus.Service.prototype.addAgent = function(agent) { var self = this; @@ -365,8 +378,7 @@ cloudeebus.Service.prototype.addAgent = function(agent) { try { // calling dbus hook object function for un-translated types self.agents.push(agent); agent.registered = true; - var result = [ objPath ]; - resolver.fulfill(result[0], true); + resolver.fulfill(objPath, true); } catch (e) { var errorStr = cloudeebus.getError(e); @@ -403,6 +415,7 @@ cloudeebus.Service.prototype.addAgent = function(agent) { return promise; }; + cloudeebus.Service.prototype._deleteWrapper = function(agent) { var objJs = agent.jsHdl; if (objJs.methodId[agent.objectPath]) { @@ -420,16 +433,24 @@ cloudeebus.Service.prototype._deleteWrapper = function(agent) { } }; -cloudeebus.Service.prototype.removeAgent = function(rmAgent, successCB, errorCB) { + +cloudeebus.Service.prototype.removeAgent = function(rmAgent) { var self = this; var promise = new cloudeebus.Promise(function (resolver) { - function ServiceRemoveAgentSuccessCB(agent) { + function ServiceRemoveAgentSuccessCB(objectPath) { + // Searching agent in list + var idx; + for (idx in self.agents) + if (self.agents[idx].objectPath == objectPath) { + agent = self.agents[idx]; + break; + } + try { // calling dbus hook object function for un-translated types - self.agents.push(agent); - agent.registered = true; - var result = [ agent ]; - resolver.fulfill(result[0], true); + self.agents.splice(idx, 1); + self._deleteWrapper(agent); + resolver.fulfill(agent, true); } catch (e) { var errorStr = cloudeebus.getError(e); @@ -444,15 +465,6 @@ cloudeebus.Service.prototype.removeAgent = function(rmAgent, successCB, errorCB) self.promise.resolver.reject(errorStr, true); } - try { - self._deleteWrapper(rmAgent); - } - catch (e) { - var errorStr = cloudeebus.getError(e); - cloudeebus.log("Exception removing wrapper of agent " + rmAgent.objectPath + " : " + errorStr); - errorCB(errorStr); - } - var arglist = [ rmAgent.objectPath ]; @@ -464,6 +476,7 @@ cloudeebus.Service.prototype.removeAgent = function(rmAgent, successCB, errorCB) return promise; }; + cloudeebus.Service.prototype._returnMethod = function(methodId, callIndex, success, result, successCB, errorCB) { var arglist = [ methodId, @@ -475,6 +488,7 @@ cloudeebus.Service.prototype._returnMethod = function(methodId, callIndex, succe this.wampSession.call("returnMethod", arglist).then(successCB, errorCB); }; + cloudeebus.Service.prototype._emitSignal = function(objectPath, signalName, result, successCB, errorCB) { var arglist = [ objectPath, @@ -932,7 +946,7 @@ cloudeebus.ProxyObject.prototype.connectToSignal = function(ifName, signal, hand var errorStr = cloudeebus.getError(error); cloudeebus.log("Error connecting to signal: " + signal + " on object: " + self.objectPath + " : " + errorStr); if (errorCB) - errorCB(cloudeebus.getError(errorStr)); + errorCB(errorStr); } var arglist = [