Public Types | Public Member Functions

base::WorkPile< T > Class Template Reference

An FIFO workpile queue. More...

#include <libppbase/base/WorkPile.h>

Inheritance diagram for base::WorkPile< T >:
base::Condition

List of all members.

Public Types

typedef std::deque< T > DEQUE
 deque shortcut type

Public Member Functions

 WorkPile (unsigned wmlow=0, unsigned wmhigh=0)
 Constructor.
 ~WorkPile ()
 Destructor.
dequeue ()
 Dequeues object.
std::list< T > dequeue (unsigned count)
 Dequeues a list of objects.
dequeue (Thread *worker)
 Dequeues object.
size_t enqueue (T t, bool block=true)
 Enqueues object.
unsigned getWorkerCount ()
 Gets the number of available workers.
size_t size ()
 Returns the number of objects in this queue.

Detailed Description

template<class T>
class base::WorkPile< T >

An FIFO workpile queue.

Author:
Christoph Schwarz
Version:
$Id: WorkPile.h 21 2010-09-05 04:18:17Z cschwarz1 $

Constructor & Destructor Documentation

template<class T>
base::WorkPile< T >::WorkPile ( unsigned  wmlow = 0,
unsigned  wmhigh = 0 
) [inline]

Constructor.

if wmlow > 0 and wmhigh == 0 then wmhigh = wmlow

Parameters:
wmlow low watermark: writers are freed when number of items drops below this limit
wmhigh high watermark: maximum number of items in the queue, putting more items causes writers to block

Member Function Documentation

template<class T>
T base::WorkPile< T >::dequeue (  )  [inline]

Dequeues object.

Returns:
next item
Exceptions:
IOException if there is no element to return
template<class T>
std::list<T> base::WorkPile< T >::dequeue ( unsigned  count  )  [inline]

Dequeues a list of objects.

Parameters:
count maximum number of objects to dequeue, 0 = unlimited
Returns:
list of available objects, may be empty if there are none
template<class T>
T base::WorkPile< T >::dequeue ( Thread worker  )  [inline]

Dequeues object.

Parameters:
worker calling thread that might wait for a new item if none is available
Returns:
the next item
Exceptions:
IOException if the thread has been interrupted (e.g. received a cancellation request)
template<class T>
size_t base::WorkPile< T >::enqueue ( t,
bool  block = true 
) [inline]

Enqueues object.

Parameters:
t the object to enqueue
block flag: block if high watermark is exceeded
Returns:
new number of objects in the queue
template<class T>
unsigned base::WorkPile< T >::getWorkerCount (  )  [inline]

Gets the number of available workers.

Returns:
number of available worker threads
template<class T>
size_t base::WorkPile< T >::size (  )  [inline]

Returns the number of objects in this queue.

Returns:
number of objects

Referenced by base::WorkPile< Socket * >::enqueue(), and base::WorkPile< Socket * >::size().


The documentation for this class was generated from the following file: