Fawkes API  Fawkes Development Version
fawkes::MessageQueue Class Reference

Message queue used in interfaces. More...

#include <>>

Classes

class  MessageIterator
 Message iterator. More...
 

Public Member Functions

 MessageQueue ()
 Constructor. More...
 
virtual ~MessageQueue ()
 Destructor. More...
 
void append (Message *msg)
 Append message to queue. More...
 
void remove (const Message *msg)
 Remove message from queue. More...
 
void remove (const unsigned int msg_id)
 Remove message from queue by message id. More...
 
void insert_after (const MessageIterator &it, Message *msg)
 Enqueue message after given iterator. More...
 
unsigned int size () const
 Get number of messages in queue. More...
 
void flush ()
 Delete all messages from queue. More...
 
bool empty () const
 Check if message queue is empty. More...
 
void lock ()
 Lock message queue. More...
 
bool try_lock ()
 Try to lock message queue. More...
 
void unlock ()
 Unlock message queue. More...
 
Messagefirst ()
 Get first message from queue. More...
 
void pop ()
 Erase first message from queue. More...
 
MessageIterator begin ()
 Get iterator to first element in message queue. More...
 
MessageIterator end ()
 Get iterator to element beyond end of message queue list. More...
 

Detailed Description

Message queue used in interfaces.

This message queue handles the basic messaging operations. The methods the Interface provides for handling message queues are forwarded to a MessageQueue instance.

See also
Interface

Definition at line 41 of file message_queue.h.

Constructor & Destructor Documentation

◆ MessageQueue()

fawkes::MessageQueue::MessageQueue ( )

Constructor.

Definition at line 56 of file message_queue.cpp.

◆ ~MessageQueue()

fawkes::MessageQueue::~MessageQueue ( )
virtual

Destructor.

Definition at line 64 of file message_queue.cpp.

References flush().

Member Function Documentation

◆ append()

void fawkes::MessageQueue::append ( Message msg)

Append message to queue.

Parameters
msgMessage to append
Exceptions
MessageAlreadyQueuedExceptionthrown if the message has already been enqueued to an interface.

Definition at line 96 of file message_queue.cpp.

References fawkes::Message::enqueued(), fawkes::Message::id(), fawkes::Mutex::lock(), fawkes::Message::mark_enqueued(), and fawkes::Mutex::unlock().

Referenced by fawkes::Interface::msgq_append().

◆ begin()

MessageQueue::MessageIterator fawkes::MessageQueue::begin ( )

Get iterator to first element in message queue.

Returns
iterator to first element in message queue
Exceptions
NotLockedExceptionthrown if message queue is not locked during this operation.

Definition at line 310 of file message_queue.cpp.

References fawkes::Mutex::try_lock(), and fawkes::Mutex::unlock().

Referenced by fawkes::Interface::msgq_begin().

◆ empty()

bool fawkes::MessageQueue::empty ( ) const

Check if message queue is empty.

Returns
true if message queue is empty, false otherwise

Definition at line 239 of file message_queue.cpp.

References fawkes::Mutex::lock(), and fawkes::Mutex::unlock().

Referenced by fawkes::Interface::msgq_empty().

◆ end()

MessageQueue::MessageIterator fawkes::MessageQueue::end ( )

Get iterator to element beyond end of message queue list.

Returns
iterator to element beyond end of message queue list
Exceptions
NotLockedExceptionthrown if message queue is not locked during this operation.

Definition at line 324 of file message_queue.cpp.

References fawkes::Mutex::try_lock(), and fawkes::Mutex::unlock().

Referenced by fawkes::Interface::msgq_end().

◆ first()

Message * fawkes::MessageQueue::first ( )

Get first message from queue.

Returns
first message from queue

Definition at line 284 of file message_queue.cpp.

Referenced by fawkes::Interface::msgq_first(), and fawkes::Interface::msgq_first_is().

◆ flush()

void fawkes::MessageQueue::flush ( )

Delete all messages from queue.

This method deletes all messages from the queue.

Definition at line 74 of file message_queue.cpp.

References fawkes::Mutex::lock(), and fawkes::Mutex::unlock().

Referenced by fawkes::Interface::msgq_flush(), and ~MessageQueue().

◆ insert_after()

void fawkes::MessageQueue::insert_after ( const MessageIterator it,
Message msg 
)

Enqueue message after given iterator.

Parameters
itIterator
msgMessage to enqueue
Returns
message queue id of the appended message.
Exceptions
NullPointerExceptionthrown if iterator is end iterator.
NotLockedExceptionthrown if message queue is not locked during this operation.
MessageAlreadyQueuedExceptionthrown if the message has already been enqueued to an interface.

Definition at line 131 of file message_queue.cpp.

References fawkes::Message::enqueued(), fawkes::Message::id(), fawkes::Message::mark_enqueued(), fawkes::Mutex::try_lock(), and fawkes::Mutex::unlock().

◆ lock()

void fawkes::MessageQueue::lock ( )

Lock message queue.

No operations can be performed on the message queue after locking it. Note that you cannot call any method of the message queue as long as the queue is locked. Use lock() only to have a secure run-through with the MessageIterator.

Definition at line 254 of file message_queue.cpp.

References fawkes::Mutex::lock().

Referenced by fawkes::Interface::msgq_lock().

◆ pop()

void fawkes::MessageQueue::pop ( )

Erase first message from queue.

Definition at line 296 of file message_queue.cpp.

References fawkes::Mutex::lock(), remove(), and fawkes::Mutex::unlock().

Referenced by fawkes::Interface::msgq_pop().

◆ remove() [1/2]

void fawkes::MessageQueue::remove ( const Message msg)

Remove message from queue.

Parameters
msgmessage to remove

Definition at line 158 of file message_queue.cpp.

References fawkes::Mutex::lock(), and fawkes::Mutex::unlock().

Referenced by fawkes::Interface::msgq_remove(), pop(), and remove().

◆ remove() [2/2]

void fawkes::MessageQueue::remove ( const unsigned int  msg_id)

Remove message from queue by message id.

Parameters
msg_idid of message to remove

Definition at line 179 of file message_queue.cpp.

References fawkes::Mutex::lock(), remove(), and fawkes::Mutex::unlock().

◆ size()

unsigned int fawkes::MessageQueue::size ( ) const

Get number of messages in queue.

Returns
number of messages in queue.

Definition at line 221 of file message_queue.cpp.

References fawkes::Mutex::lock(), and fawkes::Mutex::unlock().

Referenced by fawkes::Interface::msgq_size().

◆ try_lock()

bool fawkes::MessageQueue::try_lock ( )

Try to lock message queue.

No operations can be performed on the message queue after locking it. Note that you cannot call any method of the message queue as long as the queue is locked. Use try_lock() only to have a secure run-through with the MessageIterator.

Returns
true, if the lock has been aquired, false otherwise.

Definition at line 267 of file message_queue.cpp.

References fawkes::Mutex::try_lock().

Referenced by fawkes::Interface::msgq_try_lock().

◆ unlock()

void fawkes::MessageQueue::unlock ( )

Unlock message queue.

Definition at line 275 of file message_queue.cpp.

References fawkes::Mutex::unlock().

Referenced by fawkes::Interface::msgq_unlock().


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