Monday, November 08, 2010 at 12:02 AM.
system.verbs.builtins.betty.rpc.serverSupport.multiCall
on multiCall (callarray) {
<<Changes
<<4/9/01; 9:35:11 AM by DW
<<Created. Conforms to the spec here:
<<http://www.xmlrpc.com/discuss/msgReader$1208
<<Called from user.betty.rpcHandlers.system.multiCall.
bundle { //fault if this is a recursive call
try { //if we're debugging, don't fail
local (adrparamtable = parentof (client));
if defined (adrparamtable^.flMulticall) {
scriptError ("Can't process this call because we don't allow system.multicall to recurse.")};
adrparamtable^.flMulticall = true}};
bundle { //initialization
if not defined (betty.rpc.errorCodes.multiCallError) {
betty.rpc.errorCodes.multiCallError = 7}};
local (i, responseArray = {});
for i = 1 to sizeof (callarray) {
try { //call the script
local (onecall = callarray [i], flerror);
local (result = betty.rpc.serverSupport.callHandler (onecall.methodName, @onecall.params, @flerror));
if flerror {
responseArray = responseArray + {result}}
else {
responseArray = responseArray + {{result}}}}
else {
local (errortable);
new (tabletype, @errortable);
errortable.faultString = tryError;
errortable.faultCode = betty.rpc.errorCodes.multiCallError;
responseArray = responseArray + {errortable}}};
return (responseArray)};
bundle { //test code
local (callarray = {}, i);
for i = 1 to 10 {
new (tabletype, @onecall);
onecall.methodName = "examples.getStateNameWithError";
onecall.params = {random (35, 65)};
callarray = callarray + {onecall}};
local (multicallresult = betty.rpc.serversupport.multicall (callarray));
new (tabletype, @scratchpad.multicallresult);
for i = 1 to sizeof (multicallresult) {
scratchpad.multicallresult.[string.padwithzeros (sizeof (scratchpad.multicallresult), 3)] = multicallresult [i]};
edit (@scratchpad.multicallresult)}
This listing is for code that runs in the OPML Editor environment. I created these listings because I wanted the search engines to index it, so that when I want to look up something in my codebase I don't have to use the much slower search functionality in my object database. Dave Winer.