NAME
ost::ThreadQueue -
Somewhat generic queue processing class to establish a producer
consumer queue.
SYNOPSIS
#include <buffer.h>
Inherits ost::Mutex, ost::Thread, and ost::Semaphore.
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_t * first
data_t * last
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
typedef struct ost::ThreadQueue::_data ost::ThreadQueue::data_t
[protected]
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:
id queue ID.
pri process priority.
stack stack 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:
data pointer to data.
len size 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:
data item 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:
timeout timeout 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
data_t* ost::ThreadQueue::first [protected]
data_t * ost::ThreadQueue::last [protected]
String ost::ThreadQueue::name [protected]
bool ost::ThreadQueue::started [protected]
timeout_t ost::ThreadQueue::timeout [protected]
Author
Generated automatically by Doxygen for GNU CommonC++ from the source
code.