![]() |
PIDUINO
|
This provides a thread safe buffer. More...
#include <threadsafebuffer.h>
Public Member Functions | |
ThreadSafeBuffer () | |
virtual | ~ThreadSafeBuffer () |
virtual void | write (const T &data) |
virtual void | write (const T *buf, size_t len) |
virtual void | write (const std::vector< T > &dataVec) |
virtual bool | read (T &data, long msTimeout=0) |
virtual size_t | read (std::vector< T > &dataVec, long msTimeout=0) |
virtual size_t | read (T *buf, size_t max, long msTimeout=0) |
virtual bool | peek (T &data, long msTimeout=0) |
virtual size_t | peek (std::vector< T > &dataVec, long msTimeout=0) |
virtual size_t | peek (T *buf, size_t max, long msTimeout=0) |
size_t | size () const |
template<typename Functor > | |
void | iterate (Functor functor) |
Protected Member Functions | |
void | waitForData (std::unique_lock< std::mutex > &lock, long msTimeout) |
void | writeData (const T &data) |
void | writeData (const T *buf, size_t len) |
bool | readData (T &data) |
size_t | readData (std::vector< T > &dataVec) |
size_t | readData (T *buf, size_t max) |
bool | peekData (T &data) |
size_t | peekData (std::vector< T > &dataVec) |
size_t | peekData (T *buf, size_t max) |
virtual size_t | sizeOfData (const T &) const |
Protected Attributes | |
std::list< T > | _queue |
std::mutex | _queueMutex |
std::condition_variable | _msgNotification |
size_t | _numEnqueued |
This provides a thread safe buffer.
Definition at line 33 of file threadsafebuffer.h.
|
inline |
Definition at line 35 of file threadsafebuffer.h.
|
inlinevirtual |
Definition at line 42 of file threadsafebuffer.h.
|
inline |
Definition at line 151 of file threadsafebuffer.h.
References Piduino::ThreadSafeBuffer< T >::_numEnqueued, Piduino::ThreadSafeBuffer< T >::_queue, and Piduino::ThreadSafeBuffer< T >::_queueMutex.
|
inlinevirtual |
Definition at line 114 of file threadsafebuffer.h.
References Piduino::ThreadSafeBuffer< T >::_queueMutex, Piduino::ThreadSafeBuffer< T >::peekData(), Piduino::ThreadSafeBuffer< T >::size(), and Piduino::ThreadSafeBuffer< T >::waitForData().
|
inlinevirtual |
Definition at line 102 of file threadsafebuffer.h.
References Piduino::ThreadSafeBuffer< T >::_queueMutex, Piduino::ThreadSafeBuffer< T >::peekData(), and Piduino::ThreadSafeBuffer< T >::waitForData().
|
inlinevirtual |
Definition at line 126 of file threadsafebuffer.h.
References Piduino::ThreadSafeBuffer< T >::_queueMutex, Piduino::ThreadSafeBuffer< T >::peekData(), Piduino::ThreadSafeBuffer< T >::size(), and Piduino::ThreadSafeBuffer< T >::waitForData().
|
inlineprotected |
Definition at line 244 of file threadsafebuffer.h.
References Piduino::ThreadSafeBuffer< T >::peekData(), Piduino::ThreadSafeBuffer< T >::size(), and Piduino::ThreadSafeBuffer< T >::sizeOfData().
|
inlineprotected |
Definition at line 234 of file threadsafebuffer.h.
References Piduino::ThreadSafeBuffer< T >::_queue.
Referenced by Piduino::ThreadSafeBuffer< T >::peek(), Piduino::ThreadSafeBuffer< T >::peek(), Piduino::ThreadSafeBuffer< T >::peek(), Piduino::ThreadSafeBuffer< T >::peekData(), and Piduino::ThreadSafeBuffer< T >::peekData().
|
inlineprotected |
Definition at line 255 of file threadsafebuffer.h.
References Piduino::ThreadSafeBuffer< T >::_numEnqueued, Piduino::ThreadSafeBuffer< T >::peekData(), Piduino::ThreadSafeBuffer< T >::size(), and Piduino::ThreadSafeBuffer< T >::sizeOfData().
|
inlinevirtual |
Definition at line 79 of file threadsafebuffer.h.
References Piduino::ThreadSafeBuffer< T >::_queueMutex, Piduino::ThreadSafeBuffer< T >::readData(), Piduino::ThreadSafeBuffer< T >::size(), and Piduino::ThreadSafeBuffer< T >::waitForData().
|
inlinevirtual |
Definition at line 67 of file threadsafebuffer.h.
References Piduino::ThreadSafeBuffer< T >::_queueMutex, Piduino::ThreadSafeBuffer< T >::readData(), and Piduino::ThreadSafeBuffer< T >::waitForData().
|
inlinevirtual |
Definition at line 91 of file threadsafebuffer.h.
References Piduino::ThreadSafeBuffer< T >::_queueMutex, Piduino::ThreadSafeBuffer< T >::readData(), Piduino::ThreadSafeBuffer< T >::size(), and Piduino::ThreadSafeBuffer< T >::waitForData().
|
inlineprotected |
Definition at line 211 of file threadsafebuffer.h.
References Piduino::ThreadSafeBuffer< T >::readData(), Piduino::ThreadSafeBuffer< T >::size(), and Piduino::ThreadSafeBuffer< T >::sizeOfData().
|
inlineprotected |
Definition at line 199 of file threadsafebuffer.h.
References Piduino::ThreadSafeBuffer< T >::_numEnqueued, and Piduino::ThreadSafeBuffer< T >::_queue.
Referenced by Piduino::ThreadSafeBuffer< T >::read(), Piduino::ThreadSafeBuffer< T >::read(), Piduino::ThreadSafeBuffer< T >::read(), Piduino::ThreadSafeBuffer< T >::readData(), and Piduino::ThreadSafeBuffer< T >::readData().
|
inlineprotected |
Definition at line 222 of file threadsafebuffer.h.
References Piduino::ThreadSafeBuffer< T >::_numEnqueued, Piduino::ThreadSafeBuffer< T >::readData(), Piduino::ThreadSafeBuffer< T >::size(), and Piduino::ThreadSafeBuffer< T >::sizeOfData().
|
inline |
Definition at line 137 of file threadsafebuffer.h.
References Piduino::ThreadSafeBuffer< T >::_numEnqueued.
Referenced by Piduino::ThreadSafeBuffer< T >::peek(), Piduino::ThreadSafeBuffer< T >::peek(), Piduino::ThreadSafeBuffer< T >::peekData(), Piduino::ThreadSafeBuffer< T >::peekData(), Piduino::ThreadSafeBuffer< T >::read(), Piduino::ThreadSafeBuffer< T >::read(), Piduino::ThreadSafeBuffer< T >::readData(), and Piduino::ThreadSafeBuffer< T >::readData().
|
inlineprotectedvirtual |
Definition at line 267 of file threadsafebuffer.h.
Referenced by Piduino::ThreadSafeBuffer< T >::peekData(), Piduino::ThreadSafeBuffer< T >::peekData(), Piduino::ThreadSafeBuffer< T >::readData(), and Piduino::ThreadSafeBuffer< T >::readData().
|
inlineprotected |
Definition at line 165 of file threadsafebuffer.h.
References Piduino::ThreadSafeBuffer< T >::_msgNotification, and Piduino::ThreadSafeBuffer< T >::_queue.
Referenced by Piduino::ThreadSafeBuffer< T >::peek(), Piduino::ThreadSafeBuffer< T >::peek(), Piduino::ThreadSafeBuffer< T >::peek(), Piduino::ThreadSafeBuffer< T >::read(), Piduino::ThreadSafeBuffer< T >::read(), and Piduino::ThreadSafeBuffer< T >::read().
|
inlinevirtual |
Definition at line 63 of file threadsafebuffer.h.
References Piduino::ThreadSafeBuffer< T >::write().
|
inlinevirtual |
Definition at line 45 of file threadsafebuffer.h.
References Piduino::ThreadSafeBuffer< T >::_msgNotification, Piduino::ThreadSafeBuffer< T >::_queueMutex, and Piduino::ThreadSafeBuffer< T >::writeData().
Referenced by Piduino::ThreadSafeBuffer< T >::write().
|
inlinevirtual |
Definition at line 54 of file threadsafebuffer.h.
References Piduino::ThreadSafeBuffer< T >::_msgNotification, Piduino::ThreadSafeBuffer< T >::_queueMutex, and Piduino::ThreadSafeBuffer< T >::writeData().
|
inlineprotected |
Definition at line 186 of file threadsafebuffer.h.
References Piduino::ThreadSafeBuffer< T >::_numEnqueued, and Piduino::ThreadSafeBuffer< T >::_queue.
Referenced by Piduino::ThreadSafeBuffer< T >::write(), Piduino::ThreadSafeBuffer< T >::write(), and Piduino::ThreadSafeBuffer< T >::writeData().
|
inlineprotected |
Definition at line 192 of file threadsafebuffer.h.
References Piduino::ThreadSafeBuffer< T >::writeData().
|
protected |
Definition at line 273 of file threadsafebuffer.h.
Referenced by Piduino::ThreadSafeBuffer< T >::waitForData(), Piduino::ThreadSafeBuffer< T >::write(), and Piduino::ThreadSafeBuffer< T >::write().
|
protected |
Definition at line 274 of file threadsafebuffer.h.
Referenced by Piduino::ThreadSafeBuffer< T >::iterate(), Piduino::ThreadSafeBuffer< T >::peekData(), Piduino::ThreadSafeBuffer< T >::readData(), Piduino::ThreadSafeBuffer< T >::readData(), Piduino::ThreadSafeBuffer< T >::size(), and Piduino::ThreadSafeBuffer< T >::writeData().
|
protected |
|
protected |
Definition at line 272 of file threadsafebuffer.h.
Referenced by Piduino::ThreadSafeBuffer< T >::iterate(), Piduino::ThreadSafeBuffer< T >::peek(), Piduino::ThreadSafeBuffer< T >::peek(), Piduino::ThreadSafeBuffer< T >::peek(), Piduino::ThreadSafeBuffer< T >::read(), Piduino::ThreadSafeBuffer< T >::read(), Piduino::ThreadSafeBuffer< T >::read(), Piduino::ThreadSafeBuffer< T >::write(), and Piduino::ThreadSafeBuffer< T >::write().