GNU CommonC++
Public Member Functions | Protected Member Functions | List of all members
ost::FixedBuffer Class Reference

A buffer class that holds a known capacity of fixed sized objects defined during creation. More...

#include <buffer.h>

Inheritance diagram for ost::FixedBuffer:
ost::Buffer ost::Conditional

Public Member Functions

 FixedBuffer (size_t capacity, size_t objsize)
 Create a buffer of known capacity for objects of a specified size.
 
 FixedBuffer (const FixedBuffer &fb)
 Create a copy of an existing fixed size buffer and duplicate it's contents.
 
virtual ~FixedBuffer ()
 Destroy the fixed buffer and free the memory used to store objects.
 
FixedBufferoperator= (const FixedBuffer &fb)
 
bool isValid (void)
 
- Public Member Functions inherited from ost::Buffer
 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.
 
- Public Member Functions inherited from ost::Conditional
 Conditional (const char *id=NULL)
 Create an instance of a conditional.
 
virtual ~Conditional ()
 Destroy the conditional.
 
void signal (bool broadcast)
 Signal a conditional object and a waiting threads.
 
bool wait (timeout_t timer=0, bool locked=false)
 Wait to be signaled from another thread.
 
void enterMutex (void)
 Locks the conditional's mutex for this thread.
 
void lock (void)
 In the future we will use lock in place of enterMutex since the conditional composite is not a recursive mutex, and hence using enterMutex may cause confusion in expectation with the behavior of the Mutex class.
 
bool tryEnterMutex (void)
 Tries to lock the conditional for the current thread.
 
bool test (void)
 
void leaveMutex (void)
 Leaving a mutex frees that mutex for use by another thread.
 
void unlock (void)
 

Protected Member Functions

size_t onPeek (void *buf)
 Return the first object in the buffer.
 
size_t onWait (void *buf)
 Wait for and return a fixed object in the buffer.
 
size_t onPost (void *buf)
 Post an object of the appropriate size into the buffer.
 
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.
 

Additional Inherited Members

- Static Public Attributes inherited from ost::Buffer
static const size_t timeout
 value to return when a timed operation returned with a timeout.
 

Detailed Description

A buffer class that holds a known capacity of fixed sized objects defined during creation.

Author
David Sugar dyfet.nosp@m.@ost.nosp@m.el.co.nosp@m.m

producer/consumer buffer for fixed size objects.

Constructor & Destructor Documentation

◆ FixedBuffer() [1/2]

ost::FixedBuffer::FixedBuffer ( size_t  capacity,
size_t  objsize 
)

Create a buffer of known capacity for objects of a specified size.

Parameters
capacityof the buffer.
objsizefor each object held in the buffer.

◆ FixedBuffer() [2/2]

ost::FixedBuffer::FixedBuffer ( const FixedBuffer fb)

Create a copy of an existing fixed size buffer and duplicate it's contents.

Parameters
fbexisting FixedBuffer object.

◆ ~FixedBuffer()

virtual ost::FixedBuffer::~FixedBuffer ( )
virtual

Destroy the fixed buffer and free the memory used to store objects.

Member Function Documentation

◆ isValid()

bool ost::FixedBuffer::isValid ( void  )
virtual

Reimplemented from ost::Buffer.

◆ onPeek()

size_t ost::FixedBuffer::onPeek ( void *  buf)
protectedvirtual

Return the first object in the buffer.

Returns
predefined size of this buffers objects.
Parameters
bufpointer to copy contents of head of buffer to.

Implements ost::Buffer.

◆ onPost()

size_t ost::FixedBuffer::onPost ( void *  buf)
protectedvirtual

Post an object of the appropriate size into the buffer.

Returns
predefined size of this buffers objects.
Parameters
bufpointer to data to copy into the buffer.

Implements ost::Buffer.

◆ onWait()

size_t ost::FixedBuffer::onWait ( void *  buf)
protectedvirtual

Wait for and return a fixed object in the buffer.

Returns
predefined size of this buffers objects.
Parameters
bufpointer to hold object returned from the buffer.

Implements ost::Buffer.

◆ operator=()

FixedBuffer & ost::FixedBuffer::operator= ( const FixedBuffer fb)

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