Monday, November 08, 2010 at 12:02 AM.
system.verbs.builtins.betty.rpc.sendOneMessage
on sendOneMessage (adrmsgstring) {
<<Change Notes
<<11/11/99; 5:53:09 AM by DW
<<Called from betty.rpc.agent, it runs in its own thread, allowing asynchronous RPC messages to be sent in parallel. This makes for faster updating of all our servers for My.UserLand story flow, and for preferences flow.
<<8/20/00; 2:29:47 PM by AR
<<Added optional username and password parameters for HTTP Basic Authentication.
<<8/27/00; 11:18:07 AM by AR
<<Ignore scripterrors thrown by log.addToGuestDatabase.
local (flsave = false);
local (adrmsg = address (adrmsgstring)); //thread.easyCall only supports string params
try {
if adrmsg^.flshowmessages {
msg ("betty.rpc.SendOneMessage" + ": Sending " + adrmsg^.procedureName + " to " + adrmsg^.rpcServer + ".")};
adrmsg^.returnedval = betty.rpc.client (adrmsg^.rpcServer, adrmsg^.rpcPort, adrmsg^.procedureName, @adrmsg^.paramlist, adrmsg^.fldebug, 3600, false, adrmsg^.rpcPath, username:adrmsg^.username, password:adrmsg^.password);
if adrmsg^.adrCallback != nil {
adrmsg^.adrCallback^ (adrmsg)};
try { //8/27/00 AR: ignore errors during logging
local (adrlog = log.addToGuestDatabase ("asynchRpc"));
adrlog^ = adrmsg^};
adrmsg^.flDelete = true;
if adrmsg^.flshowmessages {
msg ("")}}
else { //message failed, reschedule, call error callback
adrmsg^.tryError = tryError;
adrmsg^.readyToRunAt = clock.now () + (60 * 5); //try again in five minutes
flsave = true;
if not defined (adrmsg^.ctErrors) {
adrmsg^.ctErrors = 1}
else {
adrmsg^.ctErrors++};
if adrmsg^.adrErrorCallback != nil {
adrmsg^.adrErrorCallback^ (adrmsg)};
if adrmsg^.flshowmessages {
msg ("")}};
local (fldeleted = false);
if defined (adrmsg^.fldelete) {
if adrmsg^.fldelete {
delete (adrmsg);
flsave = true;
fldeleted = true}};
if not fldeleted {
adrmsg^.flThreadLaunched = false;
flsave = true};
if flsave {
filemenu.save ()}}
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.