methodExist = true;
} else {
agent.jsHdl.interfaceProxies[ifName][signal] = function() {
- service._emitSignal(agent.objectPath, signal, arguments[0]);
+ var args = [];
+ for (var i=0; i < arguments.length; i++ )
+ args.push(arguments[i]);
+ service._emitSignal(agent.objectPath, signal, args);
};
return;
}
-
- if ((agent.jsHdl[signal] == undefined || agent.jsHdl[signal] == null) && !methodExist)
+
+ if ((agent.jsHdl[signal] == undefined || agent.jsHdl[signal] == null) && !methodExist)
agent.jsHdl[signal] = function() {
- service._emitSignal(agent.objectPath, signal, arguments[0]);
+ var args = [];
+ for (var i=0; i < arguments.length; i++ )
+ args.push(arguments[i]);
+ service._emitSignal(agent.objectPath, signal, args);
};
else
cloudeebus.log("Can not create new method to emit signal '" + signal + "' in object JS this method already exist!");
};
-cloudeebus.Service.prototype._emitSignal = function(objectPath, signalName, result, successCB, errorCB) {
+cloudeebus.Service.prototype._emitSignal = function(objectPath, signalName, args, successCB, errorCB) {
var arglist = [
objectPath,
signalName,
- result
+ JSON.stringify(args)
];
this.wampSession.call("emitSignal", arglist).then(successCB, errorCB);
@exportRpc
def emitSignal(self, list):
'''
- arguments: agentObjectPath, signalName, result (to emit)
+ arguments: agentObjectPath, signalName, args (to emit)
'''
objectPath = list[0]
className = re.sub('/', '_', objectPath[1:])
signalName = list[1]
- result = list[2]
- if (self.serviceAgents.has_key(className) == True):
- if (result != None):
- exe_str = "self.serviceAgents['"+ className +"']."+ signalName + "(" + str(result) + ")"
- else:
- exe_str = "self.serviceAgents['"+ className +"']."+ signalName + "()"
+ args = json.loads(list[2])
+ if (self.serviceAgents.has_key(className) == True):
+ exe_str = "self.serviceAgents['"+ className +"']."+ signalName + "("
+ if len(args) > 0:
+ exe_str += json.dumps(args[0])
+ for idx in args[1:]:
+ exe_str += "," + json.dumps(idx)
+ exe_str += ")"
eval(exe_str, self.globalCtx, self.localCtx)
else:
raise Exception("No object path " + objectPath)