Saturday, April 02, 2011 at 9:18 PM.
feedhoseSuite.client.main
on main (hosename) { <<Changes <<12/2/10; 3:40:35 AM by DW <<Add fldebug flag, and debugging code controlled by it. <<9/29/10; 2:27:25 PM by DW <<Add hosename parameter. <<9/25/10; 8:34:25 PM by DW <<Created. local (adrdata = feedHoseSuite.init (), fldebug = true); local (adrhose = feedhosesuite.client.inithose (hosename), xstruct); system.temp.feedHose.client.threadIDs.[hosename] = thread.getcurrentid (); loop { if not adrhose^.prefs.enabled { //9/30/10 by DW break}; try { local (adrday, path = "?name=" + adrhose^.prefs.serverHoseName, startticks = clock.ticks ()); if adrhose^.stats.lastSeed != "" { path = path + "&seed=" + adrhose^.stats.lastSeed}; local (xmltext = string.httpResultSplit (tcp.httpClient (server:adrhose^.prefs.server, path:path, flMessages:false, timeOutTicks:60*adrdata^.client.prefs.timeoutSecs))); adrday = mainresponder.calendar.getdayaddress (@adrhose^.calendar, clock.now ()); if fldebug { //12/2/10 by DW adrhose^.stats.lastxmltext = xmltext}; xml.compile (xmltext, @xstruct); if fldebug { //12/2/10 by DW adrhose^.stats.lastxstruct = xstruct}; local (adrfeedhose = xml.getaddress (@xstruct, "feedHose"), adr, fltimeout = true); local (adrmetadata = xml.getaddress (adrfeedhose, "metadata")); try { //might not contain an items table local (adritems = xml.getaddress (adrfeedhose, "items")); for adr in adritems { if nameof (adr^) endswith "item" { adrday^.[string.padwithzeros (sizeof (adrday^) + 1, 5)] = adr^; feedhoseSuite.client.itemArrived (hosename, adr); //10/5/10 by DW adrhose^.stats.flWrite = true; adrhose^.stats.ctNewItems++; fltimeout = false}}}; //if there's at least one new item it was not a timeout if fltimeout { adrhose^.stats.ctTimeouts++}; adrhose^.stats.lastSeed = xml.getvalue (adrmetadata, "seed"); adrhose^.stats.lastError = ""; adrhose^.stats.ctLoops++; adrhose^.stats.ctticksLastCall = clock.ticks () - startticks} //12/2/10 by DW else { adrhose^.stats.lastError = tryerror; adrhose^.stats.whenLastError = clock.now ()}; if adrhose^.stats.flWrite { feedhoseSuite.client.write (hosename); adrhose^.stats.flWrite = false; thread.sleepfor (10)}}}; //12/2/10 by DW bundle { //test code main ("nyTimes")}
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.