WvStreams
wvsubprocqueuestream.cc
00001 /*
00002  * Worldvisions Weaver Software:
00003  *   Copyright (C) 1997-2002 Net Integration Technologies, Inc.
00004  * 
00005  * A more convenient way to use WvSubProcQueue.  See wvsubprocqueuestream.h.
00006  */
00007 #include "wvsubprocqueuestream.h"
00008 
00009 
00010 WvSubProcQueueStream::WvSubProcQueueStream(int _maxrunning)
00011     : WvSubProcQueue(_maxrunning), log("Subproc Queue", WvLog::Debug5)
00012 {
00013     alarm(0);
00014 }
00015 
00016 
00017 WvSubProcQueueStream::~WvSubProcQueueStream()
00018 {
00019 }
00020 
00021 
00022 void WvSubProcQueueStream::execute()
00023 {
00024     int started = WvSubProcQueue::go();
00025     int run = running(), remain = remaining();
00026     if (started || run || remain)
00027         log("Started %s processes (%s running, %s waiting)\n",
00028             started, run, remain - run);
00029     if (!remain)
00030         alarm(1000); // nothing is even in the queue; come back later.
00031     else if (started)
00032         alarm(0); // we're busy; go fast if possible
00033     else
00034         alarm(100); // no processes were ready *this* time; wait longer
00035 }
00036 
00037