request : adding 'signature' parameter
authorFrederic PAUT <frederic.paut@linux.intel.com>
Wed, 17 Apr 2013 12:31:11 +0000 (14:31 +0200)
committerFrederic PAUT <frederic.paut@linux.intel.com>
Fri, 24 May 2013 08:02:06 +0000 (10:02 +0200)
(for nodejs compatibility and future use)

TODO
cloudeebus/cloudeebus.js

diff --git a/TODO b/TODO
index c728924..a3f4fd3 100644 (file)
--- a/TODO
+++ b/TODO
@@ -13,10 +13,9 @@ Proxy object properties:
 API style:
 ----------
 - use "Promises" pattern for asynchronous APIs 
-- support adding DBus signatures / force JSON description of numbers as floats when needed 
+- force JSON description of numbers as floats when needed 
 
 
 DBus service support:
 ---------------------
 - support sending signals
-
index a0462de..8eccc45 100644 (file)
@@ -476,17 +476,20 @@ cloudeebus.ProxyObject.prototype._introspect = function(successCB, errorCB) {
                        while (ifChild) {
                                if (ifChild.nodeName == "method") {
                                        var nArgs = 0;
+                                       var signature = "";
                                        var metChild = ifChild.firstChild;
                                        while (metChild) {
                                                if (metChild.nodeName == "arg" &&
-                                                       metChild.attributes.getNamedItem("direction").value == "in")
+                                                       metChild.attributes.getNamedItem("direction").value == "in") {
+                                                               signature += metChild.attributes.getNamedItem("type").value;
                                                                nArgs++;
+                                               }
                                                metChild = metChild.nextSibling;
                                        }
                                        var metName = ifChild.attributes.getNamedItem("name").value;
                                        if (!self[metName])
-                                               self._addMethod(ifName, metName, nArgs);
-                                       self.interfaceProxies[ifName]._addMethod(ifName, metName, nArgs);
+                                               self._addMethod(ifName, metName, nArgs, signature);
+                                       self.interfaceProxies[ifName]._addMethod(ifName, metName, nArgs, signature);
                                }
                                else if (ifChild.nodeName == "property") {
                                        if (!hasProperties)
@@ -514,7 +517,7 @@ cloudeebus.ProxyObject.prototype._introspect = function(successCB, errorCB) {
 };
 
 
-cloudeebus.ProxyObject.prototype._addMethod = function(ifName, method, nArgs) {
+cloudeebus.ProxyObject.prototype._addMethod = function(ifName, method, nArgs, signature) {
 
        var self = this;
        
@@ -522,11 +525,11 @@ cloudeebus.ProxyObject.prototype._addMethod = function(ifName, method, nArgs) {
                var args = [];
                for (var i=0; i < nArgs; i++ )
                        args.push(arguments[i]);
-               return self.callMethod(ifName, method, args);
+               return self.callMethod(ifName, method, args, signature);
        };      
 };
 
-cloudeebus.ProxyObject.prototype.callMethod = function(ifName, method, args) {
+cloudeebus.ProxyObject.prototype.callMethod = function(ifName, method, args, signature) {
        
        var self = this;
        var request = new cloudeebus.Request(this);