switching all methods to 'Promise' interface
[contrib/cloudeebus.git] / doc / agent / server.html
index bfc6d6f..f54698d 100644 (file)
@@ -17,7 +17,8 @@
    <body>
         <center><h1>cloudeebus</h1></center>
         <br>
-               <textarea style="width:80%" rows="32" id="script">var sampleXml= '<!DOCTYPE node PUBLIC "-//freedesktop//DTD D-BUS Object Introspection 1.0//EN"\n"http://www.freedesktop.org/standards/dbus/1.0/introspect.dtd">\n<node><interface name="org.cloudeebus.Sample1"><method name="Release"></method><method name="Add"><arg type="i" name="arg1"/><arg type="i" name="arg2"/><arg type="i" name="result" direction="out"/></method><signal name="ResultChanged"><arg type="i" name="result"/></signal></interface><interface name="org.cloudeebus.Sample2"><method name="Div"><arg type="i" name="arg1"/><arg type="i" name="arg2"/><arg type="i" name="result" direction="out"/></method></interface></node>';
+               <textarea style="width:80%" rows="32" id="script">var sampleXml= '<!DOCTYPE node PUBLIC "-//freedesktop//DTD D-BUS Object Introspection 1.0//EN"\n"http://www.freedesktop.org/standards/dbus/1.0/introspect.dtd">\n<node><interface name="org.cloudeebus.Sample1"><method name="Release"></method><method name="Add"><arg type="i" name="arg1"/><arg type="i" name="arg2"/><arg type="i" name="result" direction="out"/></method><method name="Variant"><arg type="a{sv}" name="arg1"/><arg type="a{sv}" name="result" direction="out"/></method><signal name="ResultChanged"><arg type="v" name="result"/></signal></interface><interface name="org.cloudeebus.Sample2"><method name="Div"><arg type="d" name="arg1"/><arg type="d" name="arg2"/><arg type="d" name="result" direction="out"/></method></interface></node>';
+
 cloudeebus.log = function(msg) {
   document.getElementById("log").innerHTML += msg + "\n";
 }
@@ -27,21 +28,27 @@ function logCB(result) {
 }
 
 function errorCB(error) {
-  cloudeebus.log(error.desc ? error.desc : error);
+  cloudeebus.log(cloudeebus.getError(error));
 }
 
 sampleObjectHandler = {
   Add: function(a,b) {
+    cloudeebus.log("Add " + a + " + " + b);
     this.ResultChanged(a+b);
     return a+b;
   }, 
+  Variant: function(a) {
+    cloudeebus.log("Get and return :" + JSON.stringify(a));
+    return a;
+  }, 
   Release: function() {
-    cloudeebus.SessionBus().service.delAgent("/org/cloudeebus/Sample", logCB, errorCB);
-    cloudeebus.SessionBus().service.remove(logCB, errorCB);
+    gService.remove().then(logCB, errorCB);
   },
   interfaceProxies : {
     "org.cloudeebus.Sample2" : {
       Div: function(a,b) {
+        cloudeebus.log("Div " + a + " / " + b);
+       this.ResultChanged(a/b);
         return a/b;
       } 
     }
@@ -55,9 +62,12 @@ sampleObjectHandler2 = {
        this.interfaceProxies["org.cloudeebus.Sample1"].ResultChanged(a+b);
        return a+b;
       }, 
+  Variant: function(a) {
+    cloudeebus.log("Get and return :" + JSON.stringify(a));
+    return a;
+  }, 
       Release: function() {
-        cloudeebus.SessionBus().service.delAgent("/org/cloudeebus/Sample", logCB, errorCB);
-        cloudeebus.SessionBus().service.remove(logCB, errorCB);
+        gService.remove().then(logCB, errorCB);
       },
     },
     "org.cloudeebus.Sample2" : {
@@ -68,22 +78,29 @@ sampleObjectHandler2 = {
   }
 };
 
-function serviceAdded(service) {
-  var agentName = "/org/cloudeebus/Sample"; // = DBUS object name
-  cloudeebus.SessionBus().service.addAgent(agentName, sampleXml, sampleObjectHandler, logCB, errorCB);
+function addAgents(service) {
+  gService = service;
+  var agent1 = new cloudeebus.Agent(service.name, "/org/cloudeebus/Sample", sampleObjectHandler, sampleXml);
+  cloudeebus.log("Adding agent " + agent1.objectPath + " on " + service.name + ", mapped on Javascript object: 'sampleObjectHandler");
+  service.addAgent(agent1).then(logCB, errorCB);
   
-  agentName = agentName + "2";
-  cloudeebus.SessionBus().service.addAgent(agentName, sampleXml, sampleObjectHandler2, logCB, errorCB);
+  var agent2 = new cloudeebus.Agent(service.name, "/org/cloudeebus/Sample2", sampleObjectHandler2, sampleXml);
+  cloudeebus.log("Adding agent " + agent2.objectPath + " on " + service.name + ", mapped on Javascript object: 'sampleObjectHandler2");
+  service.addAgent(agent2).then(logCB, errorCB);
 }
 
 function connectSuccess() {
-  cloudeebus.SessionBus().addService("org.cloudeebus.Sample", serviceAdded, errorCB);
+  if (1)
+       cloudeebus.SessionBus().addService("org.cloudeebus.Sample").then(addAgents, errorCB);
+  else {
+    gService.remove().then(logCB, errorCB);
+  }
 }
 
 cloudeebus.connect("ws://localhost:9003", null, connectSuccess, errorCB);
 </textarea>
                <br>
-               <input type="button" value="run script" onclick="evalScript()"/>
+-              <input type="button" value="run script" onclick="evalScript()"/>
                <input type="button" value="clear log" onclick="document.getElementById('log').innerHTML='';"/>
                <br>
                <pre id="log" style="height: 20em; overflow-x: auto; overflow-y: auto; background-color: #faa;"></pre>