Mark3 Realtime Kernel
Mark3::MessageQueue Class Reference

The MessageQueue class. Implements a mechanism used to send/receive data between threads. Allows threads to block, waiting for messages to be sent from other contexts. More...

#include <message.h>

Public Member Functions

void * operator new (size_t sz, void *pv)
 
 ~MessageQueue ()
 
void Init ()
 Init. More...
 
MessageReceive ()
 Receive. More...
 
MessageReceive (uint32_t u32TimeWaitMS_)
 Receive. More...
 
void Send (Message *pclSrc_)
 Send. More...
 
uint16_t GetCount ()
 GetCount. More...
 

Private Member Functions

MessageReceive_i (uint32_t u32TimeWaitMS_)
 Receive_i. More...
 

Private Attributes

Semaphore m_clSemaphore
 Counting semaphore used to manage thread blocking. More...
 
TypedDoubleLinkList< Messagem_clLinkList
 List object used to store messages. More...
 

Detailed Description

The MessageQueue class. Implements a mechanism used to send/receive data between threads. Allows threads to block, waiting for messages to be sent from other contexts.

Examples:
lab8_messages/main.cpp.

Definition at line 210 of file message.h.

Constructor & Destructor Documentation

◆ ~MessageQueue()

Mark3::MessageQueue::~MessageQueue ( )
inline

Definition at line 214 of file message.h.

Member Function Documentation

◆ GetCount()

uint16_t Mark3::MessageQueue::GetCount ( )

GetCount.

Return the number of messages pending in the "receive" queue.

Returns
Count of pending messages in the queue.

Definition at line 106 of file message.cpp.

◆ Init()

void Mark3::MessageQueue::Init ( void  )

Init.

Initialize the message queue prior to use.

Definition at line 58 of file message.cpp.

◆ operator new()

void* Mark3::MessageQueue::operator new ( size_t  sz,
void *  pv 
)
inline

Definition at line 213 of file message.h.

◆ Receive() [1/2]

Message * Mark3::MessageQueue::Receive ( )

Receive.

Receive a message from the message queue. If the message queue is empty, the thread will block until a message is available.

Returns
Pointer to a message object at the head of the queue
Examples:
lab8_messages/main.cpp.

Definition at line 64 of file message.cpp.

◆ Receive() [2/2]

Message * Mark3::MessageQueue::Receive ( uint32_t  u32TimeWaitMS_)

Receive.

Receive a message from the message queue. If the message queue is empty, the thread will block until a message is available for the duration specified. If no message arrives within that duration, the call will return with nullptr.

Parameters
u32TimeWaitMS_The amount of time in ms to wait for a message before timing out and unblocking the waiting thread.
Returns
Pointer to a message object at the head of the queue or nullptr on timeout.

Definition at line 70 of file message.cpp.

◆ Receive_i()

Message * Mark3::MessageQueue::Receive_i ( uint32_t  u32TimeWaitMS_)
private

Receive_i.

Internal function used to abstract timed and un-timed Receive calls.

Parameters
u32TimeWaitMS_Time (in ms) to block, 0 for un-timed call.
Returns
Pointer to a message, or 0 on timeout.

Definition at line 76 of file message.cpp.

◆ Send()

void Mark3::MessageQueue::Send ( Message pclSrc_)

Send.

Send a message object into this message queue. Will un-block the first waiting thread blocked on this queue if that occurs.

Parameters
pclSrc_Pointer to the message object to add to the queue
Examples:
lab8_messages/main.cpp.

Definition at line 92 of file message.cpp.

Member Data Documentation

◆ m_clLinkList

TypedDoubleLinkList<Message> Mark3::MessageQueue::m_clLinkList
private

List object used to store messages.

Definition at line 284 of file message.h.

◆ m_clSemaphore

Semaphore Mark3::MessageQueue::m_clSemaphore
private

Counting semaphore used to manage thread blocking.

Definition at line 281 of file message.h.


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