lintel 0.2.0
Loading...
Searching...
No Matches
Public Member Functions | Static Public Member Functions | List of all members
lintel::MessageQueueCore Class Reference

#include <MessageQueueCore.h>

Public Member Functions

 MessageQueueCore (std::string name, int32_t msgCount, std::size_t msgSize)
 
 ~MessageQueueCore ()
 
 MessageQueueCore (const MessageQueueCore &)=delete
 
MessageQueueCore & operator= (const MessageQueueCore &)=delete
 
int32_t numberMessagesOf () const
 
void sendOf (const void *message, std::size_t size)
 
bool trySendOf (const void *message, std::size_t size)
 
bool sendOfWithTimeout (const void *message, std::size_t size, const std::chrono::milliseconds &timeout)
 
void receiveOf (void *message, std::size_t size)
 
bool tryReceiveOf (void *message, std::size_t size)
 

Static Public Member Functions

static void removeOf (const std::string &messageQueueName)
 
static int32_t numberMessagesOfIfExistsOf (const std::string &messageQueueName)
 

Detailed Description

Non-template core of MessageQueue. Owns the underlying POSIX message queue, so translation units that use MessageQueue<T> do not have to parse the boost::interprocess headers. Messages are passed as byte buffers whose size the caller (MessageQueue<T>) derives from its own type.

Constructor & Destructor Documentation

◆ MessageQueueCore() [1/2]

lintel::MessageQueueCore::MessageQueueCore ( std::string  name,
int32_t  msgCount,
std::size_t  msgSize 
)

open or create the message queue

Parameters
nameof the message queue. No filepath just name.
msgCountlimit of queue itself
msgSizemaximum size of a single message in bytes

◆ ~MessageQueueCore()

lintel::MessageQueueCore::~MessageQueueCore ( )

◆ MessageQueueCore() [2/2]

lintel::MessageQueueCore::MessageQueueCore ( const MessageQueueCore &  )
delete

Member Function Documentation

◆ numberMessagesOf()

int32_t lintel::MessageQueueCore::numberMessagesOf ( ) const
Returns
current number of messages in the queue

◆ numberMessagesOfIfExistsOf()

static int32_t lintel::MessageQueueCore::numberMessagesOfIfExistsOf ( const std::string &  messageQueueName)
static

Open an existing queue without creating it and read its message count.

Parameters
messageQueueNamename of the queue to inspect
Returns
number of messages, 0 if the queue does not exist

◆ operator=()

MessageQueueCore & lintel::MessageQueueCore::operator= ( const MessageQueueCore &  )
delete

◆ receiveOf()

void lintel::MessageQueueCore::receiveOf ( void *  message,
std::size_t  size 
)

receives message. No message => waits until message is available

Parameters
messagebuffer receiving the message
sizemaximum size of the received message in bytes

◆ removeOf()

static void lintel::MessageQueueCore::removeOf ( const std::string &  messageQueueName)
static

remove of message queue

Parameters
messageQueueNamename of the queue to remove

◆ sendOf()

void lintel::MessageQueueCore::sendOf ( const void *  message,
std::size_t  size 
)

send of message. Message Queue full => blocks until message queue is free

Parameters
messagebuffer holding the message
sizeof the message in bytes

◆ sendOfWithTimeout()

bool lintel::MessageQueueCore::sendOfWithTimeout ( const void *  message,
std::size_t  size,
const std::chrono::milliseconds &  timeout 
)

send with a bounded wait. If the message queue stays full for the whole timeout the message is dropped.

Parameters
messagebuffer holding the message
sizeof the message in bytes
timeoutmaximum time to wait for queue space
Returns
true if the message was queued, false if it was dropped

◆ tryReceiveOf()

bool lintel::MessageQueueCore::tryReceiveOf ( void *  message,
std::size_t  size 
)

try to receive message. No message => non blocking and return false

Parameters
messagebuffer receiving the message
sizemaximum size of the received message in bytes
Returns
true if a message was received

◆ trySendOf()

bool lintel::MessageQueueCore::trySendOf ( const void *  message,
std::size_t  size 
)

send non blocking. Message Queue full => return false and doesn't send message.

Parameters
messagebuffer holding the message
sizeof the message in bytes
Returns
true if the message was queued

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