24#ifndef _INTERFACE_MESSAGE_QUEUE_H_
25#define _INTERFACE_MESSAGE_QUEUE_H_
27#include <core/exception.h>
28#include <core/exceptions/software.h>
78 unsigned int id()
const;
80 template <
class MessageType>
83 template <
class MessageType>
84 MessageType *
get()
const;
92 void remove(
const unsigned int msg_id);
95 unsigned int size()
const;
111 void remove(msg_list_t *l, msg_list_t *p);
123template <
class MessageType>
127 MessageType *msg =
dynamic_cast<MessageType *
>(cur->msg);
137template <
class MessageType>
141 MessageType *msg =
dynamic_cast<MessageType *
>(cur->msg);
Base class for exceptions in Fawkes.
Message already enqueued exception.
MessageAlreadyQueuedException()
Constructor.
Message * operator->() const
Act on current message.
bool is() const
Check if message is of given type.
MessageIterator()
Constructor.
MessageIterator & operator+(unsigned int i)
Advance by a certain amount.
MessageType * get() const
Get current message of given type.
MessageIterator & operator++()
Increment iterator.
bool operator==(const MessageIterator &c) const
Check equality of two iterators.
bool operator!=(const MessageIterator &c) const
Check inequality of two iterators.
Message * operator*() const
Get memory pointer of chunk.
MessageIterator & operator+=(unsigned int i)
Advance by a certain amount.
MessageIterator & operator=(const MessageIterator &c)
Assign iterator.
unsigned int id() const
Get ID of current element or 0 if element is end.
Message queue used in interfaces.
MessageIterator end()
Get iterator to element beyond end of message queue list.
void append(Message *msg)
Append message to queue.
MessageQueue()
Constructor.
void unlock()
Unlock message queue.
void pop()
Erase first message from queue.
void flush()
Delete all messages from queue.
void lock()
Lock message queue.
void remove(const Message *msg)
Remove message from queue.
bool empty() const
Check if message queue is empty.
MessageIterator begin()
Get iterator to first element in message queue.
virtual ~MessageQueue()
Destructor.
bool try_lock()
Try to lock message queue.
void insert_after(const MessageIterator &it, Message *msg)
Enqueue message after given iterator.
unsigned int size() const
Get number of messages in queue.
Message * first()
Get first message from queue.
Base class for all messages passed through interfaces in Fawkes BlackBoard.
Mutex mutual exclusion lock.
Fawkes library namespace.