UCommon
ost::ThreadQueue Class Referenceabstract

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

#include <thread.h>

Inherits ost::Mutex, ost::Thread, and ost::Semaphore.

Collaboration diagram for ost::ThreadQueue:

Public Member Functions

void post (const void *data, unsigned len)
 Put some unspecified data into this queue.
 
void setTimer (timeout_t timeout)
 Set the queue timeout.
 
 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.
 

Protected Types

typedef struct ost::ThreadQueue::_data data_t
 

Protected Member Functions

virtual void final ()
 
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.
 
virtual void startQueue (void)
 Start of dequeing.
 
virtual void stopQueue (void)
 End of dequeing, we expect the queue is empty for now.
 

Protected Attributes

data_t * first
 
data_t * last
 
String name
 
bool started
 
timeout_t timeout
 

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.nosp@m.@ost.nosp@m.el.co.nosp@m.m

Definition at line 885 of file thread.h.

Constructor & Destructor Documentation

◆ ThreadQueue()

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.

Member Function Documentation

◆ post()

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.

◆ runQueue()

virtual void ost::ThreadQueue::runQueue ( void * data)
protectedpure 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.

◆ setTimer()

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.

◆ startQueue()

virtual void ost::ThreadQueue::startQueue ( void )
protectedvirtual

Start of dequeing.

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

◆ stopQueue()

virtual void ost::ThreadQueue::stopQueue ( void )
protectedvirtual

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.

Field Documentation

◆ first

data_t* ost::ThreadQueue::first
protected

Definition at line 902 of file thread.h.

◆ last

data_t * ost::ThreadQueue::last
protected

Definition at line 902 of file thread.h.

◆ name

String ost::ThreadQueue::name
protected

Definition at line 904 of file thread.h.

◆ started

bool ost::ThreadQueue::started
protected

Definition at line 900 of file thread.h.

◆ timeout

timeout_t ost::ThreadQueue::timeout
protected

Definition at line 899 of file thread.h.


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