WvStreams
|
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