Fawkes API  Fawkes Development Version
fawkes::MessageQueue Class Reference

#include <>>

Classes

class  MessageIterator
 

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 47 of file message_queue.h.

Constructor & Destructor Documentation

◆ MessageQueue()

fawkes::MessageQueue::MessageQueue ( )

Constructor.

Definition at line 62 of file message_queue.cpp.

References flush().

◆ ~MessageQueue()

fawkes::MessageQueue::~MessageQueue ( )
virtual

Destructor.

Definition at line 70 of file message_queue.cpp.

References fawkes::Mutex::lock().

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 102 of file message_queue.cpp.

◆ 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 316 of file message_queue.cpp.

◆ empty()

bool fawkes::MessageQueue::empty ( ) const

Check if message queue is empty.

Returns
true if message queue is empty, false otherwise

Definition at line 245 of file message_queue.cpp.

◆ 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 330 of file message_queue.cpp.

◆ first()

Message * fawkes::MessageQueue::first ( )

Get first message from queue.

Returns
first message from queue

Definition at line 290 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 80 of file message_queue.cpp.

Referenced by 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 137 of file message_queue.cpp.

◆ 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 260 of file message_queue.cpp.

References fawkes::Mutex::try_lock().

◆ pop()

void fawkes::MessageQueue::pop ( )

Erase first message from queue.

Definition at line 302 of file message_queue.cpp.

◆ remove() [1/2]

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

Remove message from queue.

Parameters
msgmessage to remove

Definition at line 164 of file message_queue.cpp.

Referenced by 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 185 of file message_queue.cpp.

References remove().

◆ size()

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

Get number of messages in queue.

Returns
number of messages in queue.

Definition at line 227 of file message_queue.cpp.

◆ 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 273 of file message_queue.cpp.

References fawkes::Mutex::unlock().

◆ unlock()

void fawkes::MessageQueue::unlock ( )

Unlock message queue.

Definition at line 281 of file message_queue.cpp.


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