A buffer class that holds a known capacity of fixed sized objects defined during creation.
More...
#include <buffer.h>
Inheritance diagram for FixedBuffer:
Collaboration diagram for FixedBuffer:
Public Member Functions
Create a buffer of known capacity for objects of a specified size.
More...
Create a copy of an existing fixed size buffer and duplicate it's contents.
More...
Destroy the fixed buffer and free the memory used to store objects.
More...
New virtual to test if buffer is a valid object.
More...
Return the capacity of the buffer as specified at creation.
More...
Return the current capacity in use for the buffer.
More...
Let one or more threads wait for an object to become available in the buffer.
More...
Wait to be signaled from another thread.
More...
Post an object into the buffer and enable a waiting thread to receive it.
More...
Peek at the current content (first object) in the buffer.
More...
Signal a conditional object and a waiting threads.
More...
Locks the conditional's mutex for this thread.
More...
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.
More...
Tries to lock the conditional for the current thread.
More...
Leaving a mutex frees that mutex for use by another thread.
More...
Static Public Attributes
value to return when a timed operation returned with a timeout.
More...
Protected Member Functions
Return the first object in the buffer.
More...
Wait for and return a fixed object in the buffer.
More...
Post an object of the appropriate size into the buffer.
More...
Private Attributes
Related Functions
(Note that these are not member functions.)
Detailed Description
Constructor & Destructor Documentation
FixedBuffer::FixedBuffer
(
size_t
capacity,
size_t
objsize
)
Create a buffer of known capacity for objects of a specified size.
- Parameters
-
capacity of the buffer.
objsize for each object held in the buffer.
Create a copy of an existing fixed size buffer and duplicate it's contents.
- Parameters
-
virtual FixedBuffer::~FixedBuffer
(
)
virtual
Destroy the fixed buffer and free the memory used to store objects.
Member Function Documentation
void Conditional::enterMutex
(
void
)
inherited
Locks the conditional's mutex for this thread.
Remember that Conditional's mutex is NOT a recursive mutex!
- See Also
- leaveMutex
size_t Buffer::getSize
(
void
)
inlineinherited
Return the capacity of the buffer as specified at creation.
- Returns
- size of buffer.
Definition at line 135 of file buffer.h.
size_t Buffer::getUsed
(
void
)
inlineinherited
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
Definition at line 144 of file buffer.h.
bool FixedBuffer::isValid
(
void
)
virtual
New virtual to test if buffer is a valid object.
- Returns
- true if object is valid.
Reimplemented from Buffer.
void Conditional::leaveMutex
(
void
)
inherited
Leaving a mutex frees that mutex for use by another thread.
- See Also
- enterMutex
void Conditional::lock
(
void
)
inlineinherited
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.
- See Also
- enterMutex
Definition at line 686 of file thread.h.
size_t FixedBuffer::onPeek
(
void *
buf )
protectedvirtual
Return the first object in the buffer.
- Returns
- predefined size of this buffers objects.
- Parameters
-
buf pointer to copy contents of head of buffer to.
Implements Buffer.
size_t FixedBuffer::onPost
(
void *
buf )
protectedvirtual
Post an object of the appropriate size into the buffer.
- Returns
- predefined size of this buffers objects.
- Parameters
-
buf pointer to data to copy into the buffer.
Implements Buffer.
size_t FixedBuffer::onWait
(
void *
buf )
protectedvirtual
Wait for and return a fixed object in the buffer.
- Returns
- predefined size of this buffers objects.
- Parameters
-
buf pointer to hold object returned from the buffer.
Implements Buffer.
size_t Buffer::peek
(
void *
buf )
inherited
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.
size_t Buffer::post
(
void *
buf,
)
inherited
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.
void Conditional::signal
(
bool
broadcast )
inherited
Signal a conditional object and a waiting threads.
- Parameters
-
broadcast this signal to all waiting threads if true.
bool Conditional::test
(
void
)
inlineinherited
bool Conditional::tryEnterMutex
(
void
)
inherited
Tries to lock the conditional for the current thread.
Behaves like enterMutex , except that it doesn't block the calling thread.
- Returns
- true if locking the mutex was succesful otherwise false
- See Also
- enterMutex
-
leaveMutex
void Conditional::unlock
(
void
)
inlineinherited
size_t Buffer::wait
(
void *
buf,
)
inherited
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.
bool Conditional::wait
(
timeout_t
timer =
0
,
bool
locked = false
)
inherited
Wait to be signaled from another thread.
- Parameters
-
timer time period to wait.
locked flag if already locked the mutex.
Friends And Related Function Documentation
Field Documentation
char* FixedBuffer::buf
private
char * FixedBuffer::head
private
size_t FixedBuffer::objsize
private
char * FixedBuffer::tail
private
const size_t Buffer::timeout
staticinherited
value to return when a timed operation returned with a timeout.
Definition at line 118 of file buffer.h.
The documentation for this class was generated from the following file: