GNU CommonC++
Classes | Public Member Functions | Protected Types | Protected Member Functions | Protected Attributes

ost::ThreadQueue Class Reference

Somewhat generic queue processing class to establish a producer consumer queue. More...

#include <buffer.h>

Inheritance diagram for ost::ThreadQueue:
ost::Mutex ost::Thread ost::Semaphore

List of all members.

Classes

struct  _data

Public Member Functions

 ThreadQueue (const char *id, int pri, size_t stack=0)
 Create instance of our queue and give it a process priority.
virtual ~ThreadQueue ()
 Destroy the queue.
void setTimer (timeout_t timeout)
 Set the queue timeout.
void post (const void *data, unsigned len)
 Put some unspecified data into this queue.

Protected Types

typedef struct
ost::ThreadQueue::_data 
data_t

Protected Member Functions

virtual void final ()
virtual void startQueue (void)
 Start of dequeing.
virtual void stopQueue (void)
 End of dequeing, we expect the queue is empty for now.
virtual void onTimer (void)
 A derivable method to call when the timout is expired.
virtual void runQueue (void *data)=0
 Virtual callback method to handle processing of a queued data items.

Protected Attributes

timeout_t timeout
bool started
data_tfirst
data_tlast
String name

Detailed Description

Somewhat generic queue processing class to establish a producer consumer queue.

This may be used to buffer cdr records, or for other purposes where an in-memory queue is needed for rapid posting. This class is derived from Mutex and maintains a linked list. A thread is used to dequeue data and pass it to a callback method that is used in place of "run" for each item present on the queue. The conditional is used to signal the run thread when new data is posted.

This class was changed by Angelo Naselli to have a timeout on the queue

in memory data queue interface.

Author:
David Sugar <dyfet@ostel.com>

Member Typedef Documentation


Constructor & Destructor Documentation

ost::ThreadQueue::ThreadQueue ( const char *  id,
int  pri,
size_t  stack = 0 
)

Create instance of our queue and give it a process priority.

Parameters:
idqueue ID.
priprocess priority.
stackstack size.
virtual ost::ThreadQueue::~ThreadQueue ( ) [virtual]

Destroy the queue.


Member Function Documentation

virtual void ost::ThreadQueue::final ( ) [protected, virtual]

Reimplemented from ost::Thread.

virtual void ost::ThreadQueue::onTimer ( void  ) [protected, virtual]

A derivable method to call when the timout is expired.

void ost::ThreadQueue::post ( const void *  data,
unsigned  len 
)

Put some unspecified data into this queue.

A new qd structure is created and sized to contain a copy of the actual content.

Parameters:
datapointer to data.
lensize of data.
virtual void ost::ThreadQueue::runQueue ( void *  data) [protected, pure virtual]

Virtual callback method to handle processing of a queued data items.

After the item is processed, it is deleted from memory. We can call multiple instances of runQueue in order if multiple items are waiting.

Parameters:
dataitem being dequed.
void ost::ThreadQueue::setTimer ( timeout_t  timeout)

Set the queue timeout.

When the timer expires, the onTimer() method is called for the thread

Parameters:
timeouttimeout in milliseconds.
virtual void ost::ThreadQueue::startQueue ( void  ) [protected, virtual]

Start of dequeing.

Maybe we need to connect a database or something, so we have a virtual...

virtual void ost::ThreadQueue::stopQueue ( void  ) [protected, virtual]

End of dequeing, we expect the queue is empty for now.

Maybe we need to disconnect a database or something, so we have another virtual.


Member Data Documentation

bool ost::ThreadQueue::started [protected]

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