WvStreams
wvsubprocqueuestream.cc
1 /*
2  * Worldvisions Weaver Software:
3  * Copyright (C) 1997-2002 Net Integration Technologies, Inc.
4  *
5  * A more convenient way to use WvSubProcQueue. See wvsubprocqueuestream.h.
6  */
7 #include "wvsubprocqueuestream.h"
8 
9 
10 WvSubProcQueueStream::WvSubProcQueueStream(int _maxrunning)
11  : WvSubProcQueue(_maxrunning), log("Subproc Queue", WvLog::Debug5)
12 {
13  alarm(0);
14 }
15 
16 
17 WvSubProcQueueStream::~WvSubProcQueueStream()
18 {
19 }
20 
21 
23 {
24  int started = WvSubProcQueue::go();
25  int run = running(), remain = remaining();
26  if (started || run || remain)
27  log("Started %s processes (%s running, %s waiting)\n",
28  started, run, remain - run);
29  if (!remain)
30  alarm(1000); // nothing is even in the queue; come back later.
31  else if (started)
32  alarm(0); // we're busy; go fast if possible
33  else
34  alarm(100); // no processes were ready *this* time; wait longer
35 }
36 
37 
unsigned running() const
Return the number of currently running processes.
unsigned remaining() const
Return the number of unfinished (ie. running or waiting) processes.
virtual void execute()
The callback() function calls execute(), and then calls the user- specified callback if one is define...
int go()
Clean up after any running processes in the queue, and start running additional processes if any are ...
void alarm(time_t msec_timeout)
set an alarm, ie.
Definition: wvstream.cc:1049
A WvLog stream accepts log messages from applications and forwards them to all registered WvLogRcv's...
Definition: wvlog.h:56
An ordered queue of WvSubProc instances.