20 #ifndef CO_COMMANDQUEUE_H
21 #define CO_COMMANDQUEUE_H
25 #include <lunchbox/thread.h>
30 namespace detail {
class CommandQueue; }
42 CO_API
explicit CommandQueue(
const size_t maxSize = ULONG_MAX );
66 CO_API
virtual ICommand pop(
const uint32_t timeout =
67 LB_TIMEOUT_INDEFINITE );
78 LB_TIMEOUT_INDEFINITE );
102 virtual void pump() {};
104 LB_TS_VAR( _thread );
107 detail::CommandQueue*
const _impl;
111 #endif //CO_COMMANDQUEUE_H
Defines export visibility macros for Collage.
std::vector< ICommand > ICommands
A vector of input commands.
A thread-safe, blocking queue for ICommand buffers.
virtual CO_API ICommand pop(const uint32_t timeout=LB_TIMEOUT_INDEFINITE)
Pop a command from the queue.
virtual CO_API ICommands popAll(const uint32_t timeout=LB_TIMEOUT_INDEFINITE)
Pop all, but at least one command from the queue.
CO_API void flush()
Flush all pending commands.
A class managing received commands.
virtual CO_API void push(const ICommand &command)
Push a command to the queue.
virtual CO_API void pushFront(const ICommand &command)
Push a command to the front of the queue.
CO_API CommandQueue(const size_t maxSize=ULONG_MAX)
Construct a new command queue.
CO_API size_t getSize() const
virtual CO_API ICommand tryPop()
Try to pop a command from the queue.
virtual CO_API ~CommandQueue()
Destruct a new command queue.
CO_API bool isEmpty() const