Monday, November 08, 2010 at 12:07 AM.
system.verbs.builtins.xml.pubsub.notify
on notify (url, adrTable) { <<Notify a client that a resource has changed. <<1/15/02; 5:14:56 PM by PBS xml.pubsub.initTable (adrTable); bundle { //don't do notification more often than once per 15 seconds local (adrmostrecent = @adrTable^.mostRecentNotify); local (adrurl = @adrmostrecent^.[url]); if defined (adrurl^) { if string.lower (url) endswith ".opml" { if (clock.now () - adrurl^) < (15) { //one update per 15 seconds, not minutes. return}} else { if (clock.now () - adrurl^) < (60 * 15) { return}}}; adrurl^ = clock.now ()}; local (adrurl = @adrTable^.notify.[url]); if defined (adrurl^) { local (adrsub, params = {url}); for adrsub in adrurl { local (flnotify = true); bundle { //set flnotify if defined (adrsub^.cterrors) { local (now = clock.now ()); if not defined (adrsub^.whenLastError) { adrsub^.whenLastError = now}; if (now - adrsub^.whenLastError) < (60 * 10) { //ten minutes flnotify = false}}}; if flnotify { with adrsub^ { case protocol { "xml-rpc" { thread.callscript (@xml.pubsub.xmlRpcNotify, {adrsub, url})}; "soap" { thread.easyCall ("xml.pubsub.soapNotify", {path, procedure, params, nameof (adrsub^), port})}}}}}}}
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.