Ocean
Loading...
Searching...
No Matches
Ocean::Network::MessageQueue Class Reference

This class implements a message queue. More...

#include <MessageQueue.h>

Public Types

using Id = uint32_t
 Definition of a message id.
 

Public Member Functions

 MessageQueue ()=default
 Creates a new message queue.
 
 MessageQueue (MessageQueue &&messageQueue)
 Move constructor.
 
 MessageQueue (const unsigned int oldMessageAge)
 Creates a new message queue.
 
 ~MessageQueue ()
 Destructs a message queue.
 
bool push (const Id id, const std::string &message, const std::string &value)
 Pushes a new message.
 
bool front (const Id id, std::string &message, std::string &value, const bool popMessage=false)
 Gets the front message for a given message id.
 
bool front (const Id id, const double timeout, std::string &message, std::string &value, const bool popMessage=false)
 Gets the front message for a given message id and waits a specified time if no message is available.
 
void pop (const Id id)
 Pops the front message with a specified message id from the queue.
 
std::string pop (const Id id, const double timeout)
 Returns and pops the front message for a given message id and waits a specified time if no message is available.
 
bool pop (const Id id, const double timeout, std::string &message, std::string &value)
 Returns and pops the front message for a given message id and waits a specified time if no message is available.
 
void clear ()
 Clears the entire message queue.
 
void clear (const Id id)
 Clears all messages with a specified message id.
 
Id uniqueId ()
 Returns a unique message id within this message queue.
 
Id lastUniqueId ()
 Returns the last unique message id again.
 
MessageQueueoperator= (MessageQueue &&messageQueue)
 Move operator.
 

Static Public Member Functions

static constexpr Id invalidId ()
 Returns an invalid message id.
 

Protected Attributes

MessageMap messageMap_
 Map holding all messages.
 
unsigned int oldMessageAge_ = 500u
 Definition of an message age of old and therefore unused messages.
 
Id idCounter_ = invalidId()
 Message id counter.
 
Lock lock_
 Map lock.
 

Private Types

using Message = std::pair< std::string, std::string >
 Definition of a message pair.
 
using Queue = std::queue< Message >
 Definition of a queue holding message pairs.
 
using MessageMap = std::unordered_map< Id, Queue >
 Definition of a map mapping message ids to message queues.
 

Detailed Description

This class implements a message queue.

Member Typedef Documentation

◆ Id

Definition of a message id.

◆ Message

using Ocean::Network::MessageQueue::Message = std::pair<std::string, std::string>
private

Definition of a message pair.

◆ MessageMap

using Ocean::Network::MessageQueue::MessageMap = std::unordered_map<Id, Queue>
private

Definition of a map mapping message ids to message queues.

◆ Queue

using Ocean::Network::MessageQueue::Queue = std::queue<Message>
private

Definition of a queue holding message pairs.

Constructor & Destructor Documentation

◆ MessageQueue() [1/3]

Ocean::Network::MessageQueue::MessageQueue ( )
default

Creates a new message queue.

◆ MessageQueue() [2/3]

Ocean::Network::MessageQueue::MessageQueue ( MessageQueue &&  messageQueue)

Move constructor.

Parameters
messageQueueThe message queue object to be moved

◆ MessageQueue() [3/3]

Ocean::Network::MessageQueue::MessageQueue ( const unsigned int  oldMessageAge)
explicit

Creates a new message queue.

Parameters
oldMessageAgeThe capacity of the queue, with range [1, infinity)

◆ ~MessageQueue()

Ocean::Network::MessageQueue::~MessageQueue ( )

Destructs a message queue.

Member Function Documentation

◆ clear() [1/2]

void Ocean::Network::MessageQueue::clear ( )

Clears the entire message queue.

◆ clear() [2/2]

void Ocean::Network::MessageQueue::clear ( const Id  id)

Clears all messages with a specified message id.

Parameters
idMessage id to clear all messages for

◆ front() [1/2]

bool Ocean::Network::MessageQueue::front ( const Id  id,
const double  timeout,
std::string &  message,
std::string &  value,
const bool  popMessage = false 
)

Gets the front message for a given message id and waits a specified time if no message is available.

Parameters
idMessage id to get the front message for
timeoutTime to wait in seconds
messageResulting message
valueResulting optional value
popMessageTrue to pop the message after reading; False to leave it in the queue
Returns
True, if a message could be returned within the specified wait time

◆ front() [2/2]

bool Ocean::Network::MessageQueue::front ( const Id  id,
std::string &  message,
std::string &  value,
const bool  popMessage = false 
)

Gets the front message for a given message id.

Parameters
idMessage id to get the front message for
messageResulting message
valueResulting optional value
popMessageTrue to pop the message after reading; False to leave it in the queue
Returns
True, if succeeded

◆ invalidId()

constexpr MessageQueue::Id Ocean::Network::MessageQueue::invalidId ( )
staticconstexpr

Returns an invalid message id.

Returns
Invalid message id

◆ lastUniqueId()

Id Ocean::Network::MessageQueue::lastUniqueId ( )

Returns the last unique message id again.

Beware: Do no use this id directly, use it for control purpose only!

Returns
Last unique id

◆ operator=()

MessageQueue & Ocean::Network::MessageQueue::operator= ( MessageQueue &&  messageQueue)

Move operator.

Parameters
messageQueueThe message queue to be moved
Returns
Reference to this object

◆ pop() [1/3]

void Ocean::Network::MessageQueue::pop ( const Id  id)

Pops the front message with a specified message id from the queue.

Parameters
idMessage id to pop the front message for

◆ pop() [2/3]

std::string Ocean::Network::MessageQueue::pop ( const Id  id,
const double  timeout 
)

Returns and pops the front message for a given message id and waits a specified time if no message is available.

Parameters
idMessage id to get the front message for
timeoutTime to wait in seconds
Returns
Resulting message, if any

◆ pop() [3/3]

bool Ocean::Network::MessageQueue::pop ( const Id  id,
const double  timeout,
std::string &  message,
std::string &  value 
)

Returns and pops the front message for a given message id and waits a specified time if no message is available.

Parameters
idMessage id to get the front message for
timeoutTime to wait in seconds
messageResulting message
valueResulting optional value
Returns
True, if a message could be popped within the specified wait time

◆ push()

bool Ocean::Network::MessageQueue::push ( const Id  id,
const std::string &  message,
const std::string &  value 
)

Pushes a new message.

Beware: To avoid a message overflow all messages older than the defined 'age' will be released.

Parameters
idMessage id
messageThe message to push
valueOptional message value to push
Returns
True, if succeeded

◆ uniqueId()

Id Ocean::Network::MessageQueue::uniqueId ( )

Returns a unique message id within this message queue.

Returns
Unique message id

Field Documentation

◆ idCounter_

Id Ocean::Network::MessageQueue::idCounter_ = invalidId()
protected

Message id counter.

◆ lock_

Lock Ocean::Network::MessageQueue::lock_
protected

Map lock.

◆ messageMap_

MessageMap Ocean::Network::MessageQueue::messageMap_
protected

Map holding all messages.

◆ oldMessageAge_

unsigned int Ocean::Network::MessageQueue::oldMessageAge_ = 500u
protected

Definition of an message age of old and therefore unused messages.


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