org.apache.jetspeed.aggregator.impl
Class WorkerMonitorImpl

java.lang.Object
  extended byorg.apache.jetspeed.aggregator.impl.WorkerMonitorImpl
All Implemented Interfaces:
org.apache.jetspeed.aggregator.WorkerMonitor

public class WorkerMonitorImpl
extends Object
implements org.apache.jetspeed.aggregator.WorkerMonitor

The WorkerMonitor is responsible for dispatching jobs to workers It uses an Apache HTTPd configuration style of min/max/spare workers threads to throttle the rendering work. If jobs come in faster that processing, they are stored in a queue which is flushed periodically by a QueueMonitor.

Version:
$Id: WorkerMonitorImpl.java 279462 2005-09-07 23:44:03Z taylor $
Author:
Rapha?l Luta, David Sean Taylor

Field Summary
protected static org.apache.commons.logging.Log log
          Commons logging
private  int maxJobsPerWorker
          Maximum of job processed by a worker before being released
private  int maxWorkers
          Maximum number of workers
private  int minWorkers
          Minimum number of wokers to create
private  org.apache.jetspeed.util.Queue queue
          Job queue
private static long sCount
          Static counters for identifying workers
private  int spareWorkers
          Minimum amount of spare workers
private  ThreadGroup tg
          The thread group used to group all worker threads
private  Stack workers
          Stack containing currently idle workers
 
Constructor Summary
WorkerMonitorImpl(int minWorkers, int maxWorkers, int spareWorkers, int maxJobsPerWorker)
           
 
Method Summary
protected  void addWorkers(int wCount)
          Create the request number of workers and add them to list of available workers.
 org.apache.jetspeed.aggregator.Worker getWorker()
          Retrieves an idle worker
 void process(org.apache.jetspeed.aggregator.RenderingJob job)
          Assign a job to a worker and execute it or queue the job if no worker is available.
 void release(org.apache.jetspeed.aggregator.Worker worker)
          Put back the worker in the idle queue unless there are pending jobs and worker can still be committed to a new job before being released.
 void setQueue(org.apache.jetspeed.util.Queue queue)
           
 void start()
           
 void stop()
           
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

log

protected static final org.apache.commons.logging.Log log
Commons logging


sCount

private static long sCount
Static counters for identifying workers


minWorkers

private int minWorkers
Minimum number of wokers to create


maxWorkers

private int maxWorkers
Maximum number of workers


spareWorkers

private int spareWorkers
Minimum amount of spare workers


maxJobsPerWorker

private int maxJobsPerWorker
Maximum of job processed by a worker before being released


workers

private Stack workers
Stack containing currently idle workers


tg

private ThreadGroup tg
The thread group used to group all worker threads


queue

private org.apache.jetspeed.util.Queue queue
Job queue

Constructor Detail

WorkerMonitorImpl

public WorkerMonitorImpl(int minWorkers,
                         int maxWorkers,
                         int spareWorkers,
                         int maxJobsPerWorker)
Method Detail

start

public void start()
Specified by:
start in interface org.apache.jetspeed.aggregator.WorkerMonitor

stop

public void stop()
Specified by:
stop in interface org.apache.jetspeed.aggregator.WorkerMonitor

setQueue

public void setQueue(org.apache.jetspeed.util.Queue queue)
Specified by:
setQueue in interface org.apache.jetspeed.aggregator.WorkerMonitor

addWorkers

protected void addWorkers(int wCount)
Create the request number of workers and add them to list of available workers.

Parameters:
wCount - the number of workers to create

getWorker

public org.apache.jetspeed.aggregator.Worker getWorker()
Retrieves an idle worker

Specified by:
getWorker in interface org.apache.jetspeed.aggregator.WorkerMonitor
Returns:
a Worker from the idle pool or null if non available

process

public void process(org.apache.jetspeed.aggregator.RenderingJob job)
Assign a job to a worker and execute it or queue the job if no worker is available.

Specified by:
process in interface org.apache.jetspeed.aggregator.WorkerMonitor
Parameters:
job - the Job to process

release

public void release(org.apache.jetspeed.aggregator.Worker worker)
Put back the worker in the idle queue unless there are pending jobs and worker can still be committed to a new job before being released.

Specified by:
release in interface org.apache.jetspeed.aggregator.WorkerMonitor


Copyright © 1999-2005 Apache Software Foundation. All Rights Reserved.