From bd289679f47183cda9e187330236a155157c3ec4 Mon Sep 17 00:00:00 2001 From: Frederic PAUT Date: Mon, 8 Jul 2013 14:11:00 +0200 Subject: [PATCH] dbus service : bug fix on 'remove agent' --- cloudeebus/cloudeebus.js | 9 ++++----- cloudeebus/cloudeebus.py | 25 +++++++++++++------------ 2 files changed, 17 insertions(+), 17 deletions(-) diff --git a/cloudeebus/cloudeebus.js b/cloudeebus/cloudeebus.js index a6bcded..f190308 100644 --- a/cloudeebus/cloudeebus.js +++ b/cloudeebus/cloudeebus.js @@ -431,16 +431,15 @@ 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) { 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.pop(agent); + agent.registered = false; + resolver.fulfill(agent, true); } catch (e) { var errorStr = cloudeebus.getError(e); diff --git a/cloudeebus/cloudeebus.py b/cloudeebus/cloudeebus.py index a3b47e7..232b862 100755 --- a/cloudeebus/cloudeebus.py +++ b/cloudeebus/cloudeebus.py @@ -286,14 +286,13 @@ def createClassName(objectPath): ################################################################################ class DynDBusClass(): def __init__(self, className, globalCtx, localCtx): - self.className = className self.xmlCB = XmlCbParser(self) self.signature = {} self.class_code = ExecCode(globalCtx, localCtx) self.class_code.indent_increment = 4 self.class_code.append_stmt("import dbus") self.class_code.append_stmt("\n") - self.class_code.append_stmt("class " + self.className + "(dbus.service.Object):") + self.class_code.append_stmt("class " + className + "(dbus.service.Object):") self.class_code.indent() ## Overload of __init__ method @@ -622,17 +621,17 @@ class CloudeebusService: ''' self.agentObjectPath = list[0] xmlTemplate = list[1] - self.className = createClassName(self.agentObjectPath) - if (self.dynDBusClasses.has_key(self.className) == False): - self.dynDBusClasses[self.className] = DynDBusClass(self.className, self.globalCtx, self.localCtx) - self.dynDBusClasses[self.className].createDBusServiceFromXML(xmlTemplate) - self.dynDBusClasses[self.className].declare() + className = createClassName(self.agentObjectPath) + if (self.dynDBusClasses.has_key(className) == False): + self.dynDBusClasses[className] = DynDBusClass(className, self.globalCtx, self.localCtx) + self.dynDBusClasses[className].createDBusServiceFromXML(xmlTemplate) + self.dynDBusClasses[className].declare() ## Class already exist, instanciate it if not already instanciated - if (self.serviceAgents.has_key(self.className) == False): - self.serviceAgents[self.className] = eval(self.className + "(self.bus, callback=self.srvCB, objPath=self.agentObjectPath, busName=self.srvName)", self.globalCtx, self.localCtx) + if (self.serviceAgents.has_key(className) == False): + self.serviceAgents[className] = eval(className + "(self.bus, callback=self.srvCB, objPath=self.agentObjectPath, busName=self.srvName)", self.globalCtx, self.localCtx) - self.serviceAgents[self.className].add_to_connection() + self.serviceAgents[className].add_to_connection() return (self.agentObjectPath) @exportRpc @@ -642,10 +641,12 @@ class CloudeebusService: ''' agentObjectPath = list[0] className = createClassName(agentObjectPath) + + print 'PY Try to remove ' + className if (self.serviceAgents.has_key(className)): - self.serviceAgents[self.className].remove_from_connection() - self.serviceAgents.pop(self.className) + self.serviceAgents[className].remove_from_connection() + self.serviceAgents.pop(className) else: raise Exception(agentObjectPath + " doesn't exist!") -- 2.7.4