#include <buffer.h>
Inherits ost::Conditional.
Inherited by ost::FixedBuffer.
Buffer (size_t capacity)
Create a buffer object of known capacity. virtual ~Buffer ()
In derived functions, may be used to free the actual memory used to hold
buffered data. size_t getSize (void)
Return the capacity of the buffer as specified at creation. size_t
getUsed (void)
Return the current capacity in use for the buffer. size_t wait (void
*buf, timeout_t timeout=0)
Let one or more threads wait for an object to become available in the buffer.
size_t post (void *buf, timeout_t timeout=0)
Post an object into the buffer and enable a waiting thread to receive it.
size_t peek (void *buf)
Peek at the current content (first object) in the buffer. virtual bool
isValid (void)
New virtual to test if buffer is a valid object.
static const size_t timeout
value to return when a timed operation returned with a timeout.
virtual size_t onPeek (void *buf)=0
Invoke derived class buffer peeking method. virtual size_t onWait (void
*buf)=0
Invoke derived class object request from buffer. virtual size_t onPost
(void *buf)=0
Invoke derived class posting of object to buffer.
(Note that these are not member functions.)
size_t get (Buffer &b, void *o, timeout_t t=0)
size_t put (Buffer &b, void *o, timeout_t t=0)
size_t peek (Buffer &b, void *o)
The buffer class represents an IPC service that is built upon a
buffer of fixed capacity that can be used to transfer objects between one or
more producer and consumer threads.
Producer threads post objects into the buffer, and consumer
threads wait for and receive objects from the buffer. Semaphores are used to
to block the buffer from overflowing and indicate when there is data
available, and mutexes are used to protect multiple consumers and producer
threads from stepping over each other.
The buffer class is an abstract class in that the actual data
being buffered is not directly specified within the buffer class itself. The
buffer class should be used as a base class for a class that actually
impliments buffering and which may be aware of the data types actually are
being buffered. A template class could be created based on buffer for this
purpose. Another possibility is to create a class derived from both
Thread and Buffer which can be used to implement message
passing threads.
Author
David Sugar dyfet@ostel.com
Producer/Consumer buffer for use between threads.
Create a buffer object of known capacity.
Parameters
capacity is the integer capacity of the
buffer.
In derived functions, may be used to free the actual memory used
to hold buffered data.
Return the capacity of the buffer as specified at creation.
Returns
size of buffer.
Return the current capacity in use for the buffer. Free space is
technically getSize() - getUsed().
Returns
integer used capacity of the buffer.
See also
getSize
New virtual to test if buffer is a valid object.
Returns
true if object is valid.
Reimplemented in ost::FixedBuffer.
Invoke derived class buffer peeking method.
Returns
size of object found.
Parameters
buf pointer to copy contents of head of buffer
to.
Implemented in ost::FixedBuffer.
Invoke derived class posting of object to buffer.
Returns
size of object posted.
Parameters
buf pointer to object being posted to the
buffer.
Implemented in ost::FixedBuffer.
Invoke derived class object request from buffer.
Returns
size of object returned.
Parameters
buf pointer to hold object returned from the
buffer.
Implemented in ost::FixedBuffer.
Peek at the current content (first object) in the buffer.
Returns
size of object in the buffer.
Parameters
buf pointer to store object found in the
buffer.
Referenced by peek().
Post an object into the buffer and enable a waiting thread to
receive it.
Returns
size of object posted in bytes.
Parameters
buf pointer to object to store in the buffer.
timeout time to wait.
Referenced by put().
Let one or more threads wait for an object to become available in
the buffer. The waiting thread(s) will wait forever if no object is ever
placed into the buffer.
Returns
size of object passed by buffer in bytes.
Parameters
buf pointer to store object retrieved from the
buffer.
timeout time to wait.
Referenced by get().
Examples
SampleSocketPort.cpp.
References peek().
value to return when a timed operation returned with a
timeout.
Generated automatically by Doxygen for GNU CommonC++ from the
source code.