r9176: added a much neater method of calling printf on the server from client side...
authorAndrew Tridgell <tridge@samba.org>
Sun, 7 Aug 2005 07:00:00 +0000 (07:00 +0000)
committerGerald (Jerry) Carter <jerry@samba.org>
Wed, 10 Oct 2007 18:31:28 +0000 (13:31 -0500)
use srv_printf() and normal printf arguments
(This used to be commit 11c7e8db3d2501a6a439d3e3a63a5055cc577f51)

swat/esptest/qooxdoo.esp
swat/scripting/client/call.js
swat/scripting/general_calls.esp [new file with mode: 0644]

index dbdb4ddc7a815fa23c53b01c0e71a016c077434f..76d3236fc97c7db50fbc64e1ad0e07797f47b5d5 100644 (file)
@@ -53,8 +53,7 @@
     }
 
     function start_call() { 
-           server_call('remote.esp', 'printf', null, 
-                       "Starting calls ... (stopit=%d)\\n", stopit);
+           srv_printf("Starting calls ... (stopit=%d)\\n", stopit);
            stopit = 0;
            shared.counter = 0;
            shared.start_time = 0;
@@ -62,7 +61,7 @@
     };
 
     function stop_call() { 
-           server_call('remote.esp', 'printf', null, "Stopping calls\\n");
+           srv_printf("Stopping calls\\n");
            stopit = 1;
     };
 
index d1671ef70f3e9ac9bcfac2b8e3597c3defceb052..3af6a5a876fd9eaf49b30c7372ef917208aeac47 100644 (file)
@@ -40,7 +40,7 @@ function __http_object() {
 /*
        usage:
 
-         server_call(url, func, callback, ...);
+         vserver_call(url, func, callback, args);
 
        'func' is a function name to call on the server
        any additional arguments are passed to func() on the server
@@ -48,17 +48,17 @@ function __http_object() {
        The callback() function is called with the returned
        object. 'callback' may be null.
 */
-function server_call(url, func, callback) {
+function vserver_call(url, func, callback, args) {
+       var args2 = new Object();
+       args2.length = args.length;
+       var i;
+       for (i=0;i<args.length;i++) {
+               args2[i] = args[i];
+       }
        var req = __http_object();
        req.open("POST", url, true);
        req.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded'); 
-       var args = new Object();
-       var i;
-       for (i=3;i<arguments.length;i++) {
-               args[i-3] = arguments[i];
-       }
-       args.length = i-3;
-       req.send("func=" + func + "&args=" + encodeObject(args));
+       req.send("func=" + func + "&args=" + encodeObject(args2));
        req.onreadystatechange = function() { 
                if (4 == req.readyState && callback != null) {
                        var o = decodeObject(req.responseText);
@@ -67,3 +67,32 @@ function server_call(url, func, callback) {
        }
 }
 
+
+/*
+       usage:
+
+         server_call(url, func, callback, ...);
+
+       'func' is a function name to call on the server
+       any additional arguments are passed to func() on the server
+
+       The callback() function is called with the returned
+       object. 'callback' may be null.
+*/
+function server_call(url, func, callback) {
+       var args = new Object();
+       var i;
+       for (i=3;i<arguments.length;i++) {
+               args[i-3] = arguments[i];
+       }
+       args.length = i-3;
+       vserver_call(url, func, callback, args);
+}
+
+
+/*
+       call printf on the server
+*/
+function srv_printf() {
+       vserver_call('/scripting/general_calls.esp', 'srv_printf', null, arguments);
+}
diff --git a/swat/scripting/general_calls.esp b/swat/scripting/general_calls.esp
new file mode 100644 (file)
index 0000000..3a78ff6
--- /dev/null
@@ -0,0 +1,26 @@
+<%
+/*
+       used for general purpose calls
+*/
+libinclude("server_call.js");
+
+/* register a call for clients to make */
+var call = servCallObj();
+
+/*
+  a remote printf, for displaying stuff on smbd stdout
+*/
+function srv_printf()
+{
+       println("in srv_printf");
+       var s = string_init();
+       print(s.vsprintf(arguments));
+       return undefined;
+}
+
+/* add some basic calls */
+call.add('srv_printf', srv_printf);
+
+/* run the function that was asked for */
+call.run();
+%>