2 server side js functions for handling async calls from js clients
4 Copyright Andrew Tridgell 2005
5 released under the GNU GPL Version 2 or later
8 libinclude("encoder.js");
13 function __register_call(name, func)
20 run a call sent from the client, and output the returned object (if any)
22 function __run_call() {
24 var name = form['ajaj_func'];
25 if (name == undefined) {
26 /* no function to run */
29 var args = form['ajaj_args'];
30 if (args == undefined) {
31 println("no function arguments given in run_call");
34 args = decodeObject(args);
35 if (c.calls[name] == undefined) {
36 println("undefined remote call " + name);
39 var f = c.calls[name];
41 /* oh what a hack - should write a varargs ejs helper */
42 if (args.length == 0) {
44 } else if (args.length == 1) {
46 } else if (args.length == 2) {
47 res = f(args[0], args[1]);
48 } else if (args.length == 3) {
49 res = f(args[0], args[1], args[2]);
50 } else if (args.length == 4) {
51 res = f(args[0], args[1], args[2], args[3]);
52 } else if (args.length == 5) {
53 res = f(args[0], args[1], args[2], args[3], args[4]);
54 } else if (args.length == 6) {
55 res = f(args[0], args[1], args[2], args[3], args[4], args[5]);
56 } else if (args.length == 7) {
57 res = f(args[0], args[1], args[2], args[3], args[4], args[5], args[6]);
58 } else if (args.length == 8) {
59 res = f(args[0], args[1], args[2], args[3], args[4], args[5], args[6], args[7]);
61 println("too many arguments for remote call: " + name);
64 var repobj = new Object();
66 write(encodeObject(repobj));
73 initialise a server call object
75 function servCallObj()
78 c.add = __register_call;
80 c.calls = new Object();