ucommon
Public Member Functions | Protected Types | Protected Member Functions | Protected Attributes
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:
Collaboration graph
[legend]

Public Member Functions

void post (const void *data, unsigned len)
 Put some unspecified data into this queue. More...
 
void setTimer (timeout_t timeout)
 Set the queue timeout. More...
 
 ThreadQueue (const char *id, int pri, size_t stack=0)
 Create instance of our queue and give it a process priority. More...
 
virtual ~ThreadQueue ()
 Destroy the queue.
 
- Public Member Functions inherited from ost::Mutex
void enter (void)
 
void enterMutex (void)
 
void leave (void)
 
void leaveMutex (void)
 
bool test (void)
 
bool tryEnterMutex (void)
 
- Public Member Functions inherited from ost::Thread
void detach (void)
 
void exit (void)
 
virtual void final (void)
 
void finalize (void)
 
pthread_t getId (void)
 Get the thread id.
 
virtual void initial (void)
 
bool isRunning (void)
 
bool isThread (void)
 
void join (void)
 
void map (void)
 
virtual void notify (Thread *thread)
 
virtual void run (void)=0
 
void start (void)
 
void sync (void)
 
void terminate (void)
 
 Thread (int pri=0, size_t stack=0)
 
- Public Member Functions inherited from ost::Semaphore
void post (void)
 
 Semaphore (unsigned size=0)
 
bool wait (timeout_t timeout=0)
 

Protected Types

typedef struct
ost::ThreadQueue::_data 
data_t
 
- Protected Types inherited from ucommon::Thread
enum  
 

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. More...
 
virtual void startQueue (void)
 Start of dequeing. More...
 
virtual void stopQueue (void)
 End of dequeing, we expect the queue is empty for now. More...
 
- Protected Member Functions inherited from ucommon::RecursiveMutex
virtual void _lock (void)
 
virtual void _unlock (void)
 
void lock (void)
 Acquire or increase locking.
 
bool lock (timeout_t timeout)
 Timed lock request.
 
 RecursiveMutex ()
 Create rexlock.
 
void release (void)
 Release or decrease locking.
 
void exclusive_lock (void)
 Access interface to exclusive lock the object.
 
void release_exclusive (void)
 Access interface to release a lock.
 
- Protected Member Functions inherited from ucommon::JoinableThread
bool is_active (void)
 Check if running.
 
void join (void)
 Join thread with parent. More...
 
 JoinableThread (size_t size=0)
 Create a joinable thread with a known context stack size. More...
 
virtual ~JoinableThread ()
 Delete child thread. More...
 
void background (void)
 Start execution of child context as background thread. More...
 
void start (int priority=0)
 Start execution of child context. More...
 
- Protected Member Functions inherited from ucommon::Thread
void map (void)
 Map thread for get method. More...
 
 Thread (size_t stack=0)
 Create a thread object that will have a preset stack size. More...
 
virtual void exit (void)
 Exit the thread context. More...
 
bool isRunning (void)
 
 operator bool ()
 
bool operator! ()
 
void setPriority (void)
 Set thread priority without disrupting scheduling if possible. More...
 
virtual ~Thread ()
 Destroy thread object, thread-specific data, and execution context.
 

Protected Attributes

data_t * first
 
data_t * last
 
String name
 
bool started
 
timeout_t timeout
 
- Protected Attributes inherited from ucommon::RecursiveMutex
pthread_t locker
 
unsigned lockers
 
unsigned waiting
 
- Protected Attributes inherited from ucommon::JoinableThread
volatile bool joining
 
volatile bool running
 
- Protected Attributes inherited from ucommon::Thread
void * cancellor
 
int priority
 
enum ucommon::Thread:: { ... }  reserved
 
size_t stack
 
pthread_t tid
 

Additional Inherited Members

- Public Types inherited from ost::Thread
enum  Throw { throwNothing, throwObject, throwException }
 How to raise error.
 
typedef enum ost::Thread::Throw Throw
 How to raise error.
 
- Static Public Member Functions inherited from ost::Thread
static Thread * get (void)
 
static Throw getException (void)
 Get exception mode of the current thread. More...
 
static void setException (Throw mode)
 Set exception mode of the current thread. More...
 
static void sleep (timeout_t msec=ucommon::Timer::inf)
 
static void yield (void)
 
- Static Protected Member Functions inherited from ucommon::Thread
static void concurrency (int level)
 Set concurrency level of process. More...
 
static bool equal (pthread_t thread1, pthread_t thread2)
 Determine if two thread identifiers refer to the same thread. More...
 
static Threadget (void)
 Get mapped thread object. More...
 
static void init (void)
 Used to initialize threading library. More...
 
static void policy (int polid)
 Used to specify scheduling policy for threads above priority "0". More...
 
static pthread_t self (void)
 Get current thread id. More...
 
static void sleep (timeout_t timeout)
 Sleep current thread for a specified time period. More...
 
static void yield (void)
 Yield execution context of the current thread. More...
 

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 779 of file thread.h.

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.

Member Function Documentation

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)
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.
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  )
protectedvirtual

Start of dequeing.

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

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.


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