Friday, November 19, 2010 at 3:00 AM.
river2Suite.doScanNow
on doScanNow () { <<Changes <<11/17/10; 1:09:56 PM by DW <<Instead of building the static pages here directly, set a boolean that causes them to be built in the everyMinute script. This keeps the builds from piling up if there are lots of updates. <<11/17/10; 12:02:50 PM by DW <<If a call to river2Suite.readList fails, that shouldn't kill the scan. We now log the error and continue the scan. <<10/6/10; 8:54:09 PM by DW <<Use river2Suite.readAllFeeds to do the scan. <<9/26/10; 10:49:42 AM by DW <<Call the beforeScan callbacks. <<3/17/10; 8:21:11 PM by DW <<Do a static render after completing scan, if enabled. <<9/17/09; 7:27:27 AM by DW <<Update opml.root after every scan as well as river2.root. <<8/16/09; 12:00:15 PM by DW <<Read the reading lists before the feeds. <<8/10/09; 2:45:34 PM by DW <<Do a code update after running a scan. <<8/10/09; 7:32:01 AM by DW <<Minor tweak to the log message. <<7/18/09; 5:09:26 PM by DW <<Renew subscriptions after every scan. If a feed gets a <cloud> element, we respond as soon as we notice it. <<6/16/09; 1:58:00 PM by DW <<Created. local (adrdata = river2suite.init (), adrfeed, startticks = clock.ticks ()); bundle { //callbacks, 9/26/10 by DW local (adrscript); for adrscript in @adrdata^.callbacks.beforeScan { while typeof (adrscript^) == addresstype { adrscript = adrscript^}; try {adrscript^ ()}}}; local (ctItemsAtStart = adrdata^.stats.ctItems, ctfeeds=0); river2Suite.opmlAutoExport (); //if enabled, export before every scan adrdata^.stats.whenLastScanStart = clock.now (); bundle { //read all the lists local (adrlist); for adrlist in @adrdata^.lists { local (url = nameof (adrlist^), startticks = clock.ticks ()); try { river2Suite.readList (url)} else { log2.add (river2Info.name, "Error", "Error in <a href=\"" + url + "\">readling list</a>: \"" + tryerror + "\"", startticks)}}}; bundle { //read all the feeds <<for adrfeed in @adrdata^.feeds <<river2Suite.readFeed (nameof (adrfeed^)) <<ctfeeds++ river2suite.readallfeeds (@ctfeeds)}; //10/6/10 by DW river2Suite.renewSubscriptions (); //7/18/09 by DW adrdata^.stats.whenLastScanEnd = clock.now (); adrdata^.stats.ctScans++; bundle { //log the scan local (ctnewitems = adrdata^.stats.ctItems - ctItemsAtStart); local (htmltext = ctfeeds + " feeds read, " + ctnewitems + " new items."); log2.add (river2Info.name, "Scan", htmltext, startticks)}; bundle { //static render if enabled, 3/17/10 by DW if adrdata^.prefs.static.enabled { <<thread.callscript (@river2Suite.static.afterScan, {}) system.temp.river2.flStaticBuild = true}}; //11/17/10 by DW bundle { //callbacks local (adrscript); for adrscript in @adrdata^.callbacks.afterScan { while typeof (adrscript^) == addresstype { adrscript = adrscript^}; try {adrscript^ ()}}}; bundle { //code update, 8/10/09 by DW frontier.tools.updateme (this); opmlEditor.updateMainRoot ()}}; //9/17/09 by DW bundle { //test code doScanNow ()}
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.