Monday, November 08, 2010 at 12:03 AM.

system.verbs.builtins.Frontier.tools.thread.script

<<Changes
	<<Sunday, August 13, 2000 at 12:14:02 AM by DW
		<<Call playlist.init each time through the loop.
		<<Write out history.xml if the history outline changed.
	<<Sunday, August 20, 2000 at 7:22:11 PM by DW
		<<Document what appears to be a threading lockup.
	<<Saturday, September 16, 2000 at 3:54:28 PM by PBS
		<<Write history.opml, not history.xml.
	<<Saturday, September 16, 2000 at 9:09:56 PM by DW
		<<Only upstream if user.playlist.data.upstream.enabled is true. Testing the flag at this level makes it possible to debug the main upstreaming script.
	<<Friday, September 22, 2000 at 8:12:40 PM by JES
		<<Write history.opml with type OPML, and creator Radu.
	<<Thursday, September 28, 2000 at 11:52:32 PM by JES
		<<Update tool installations.
	<<10/17/00; 5:58:01 PM by PBS
		<<Don't upstream if the user is working offline.
	<<Tuesday, October 24, 2000 at 5:20:16 PM by JES
		<<Don't write history.opml. This is now done by musicThread.script.
	<<Friday, December 29, 2000 at 6:24:29 PM by DW
		<<Lock a semaphore before starting the periodic upstream check, unlock it when we're done. I need this in MUOTD, when I'm writing files and upstreaming them the background thread needs to be kept from interfering. Otherwise files would get upstreamed twice. It matters.
		<<Any application that uses the upstreaming code must call playlist.upstream.lock before starting, so it can wait for the background thread to complete a scan and unlock when it finishes so this thread can do its thing.
	<<Friday, December 29, 2000 at 7:29:41 PM by DW
		<<Instead of sleeping for user.playlist.data.upstream.secsBetweenChecks seconds each time, we sleep until the next even interval. This keeps the thread from drifting, if secsBetweenChecks is 10, it'll run at 10 secs, 20 secs, etc into the minute.
	<<01/07/01; 8:03:11 PM by DW
		<<Save all modified databases once every minute if user.playlist.prefs.flSaveDatabasesEveryMinute is true.
	<<01/08/01; 6:34:27 PM by PBS
		<<Call playlist.tools.checkFolder, which does much less than the older scanFolder routine, helping performance.
	<<02/05/01; 2:27:22 AM by JES
		<<Wait for the startup script to finish before starting the thread loop, to prevent conflicts with setting up the Tools menu.
	<<04/17/01; 3:20:38 PM by JES
		<<Check to see if this is Pike before doing anything with upstreaming or saving databases.
while system.temp.Frontier.startingUp { //02/04/01 JES: wait for startup to finish
	thread.sleepTicks (6)}; //wait 0.1sec
local (day, month, year, hour, minute, second);
local (lastMinuteSave = -1);
loop {
	date.get (clock.now (), @day, @month, @year, @hour, @minute, @second);
	Frontier.tools.init ();
	Frontier.tools.thread.ct++;
	Frontier.tools.checkTools (); //PBS 01/08/01: load new tools
	bundle { //schedule wakeup
		local (secsbetw = 60);
		local (secstosleep = (((second + secsbetw) / secsbetw) * secsbetw) - second);
		thread.sleepfor (secstosleep)}}



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.