Static facade over shared-memory message queues and a request/reply matcher.
More...
#include <MemoryQueues.h>
|
| | MessageQueue (char *data, uint32 size) |
| | Attach this wrapper to a raw queue region.
|
| | ~MessageQueue () |
| | changeSize (uint32 size) |
| | Update the wrapper's notion of the region size.
|
| | changeData (char *data) |
| | Re-point the wrapper at a new mapped address.
|
|
| static bool | CreateMessageQueue (uint32 &qid, const char *name=NULL) |
| | Create a new shared queue.
|
| static bool | AddMessageToQueue (uint32 qid, DataMessage *msg) |
| | Append a message (copied into shared memory).
|
| static DataMessage * | WaitForMessageQueue (uint32 qid, uint32 ms) |
| | Block up to ms milliseconds for a message.
|
| static uint32 | GetMessageQueueSize (uint32 qid) |
| static bool | GetMessageQueueByName (uint32 &qid, const char *name) |
| | Look up a queue id by its global name.
|
| static bool | DestroyMessageQueue (uint32 qid) |
| | Destroy a queue and release its shared memory.
|
| static bool | AddRequest (DataMessage *msg, uint32 &reqID) |
| | Submit a request message.
|
| static bool | AddReply (uint32 reqID, bool success, DataMessage *msg) |
| | Post the reply for request reqID.
|
| static bool | WaitForReply (uint32 reqID, uint32 ms, uint8 &status, DataMessage **outMsg) |
| | Block up to ms for the reply to reqID.
|
| static uint32 | GetRequestCount () |
| static bool | UnitTest () |
| | Self-test of queue + request logic.
|
| static bool | UnitTestQueues () |
| | Self-test of the raw queue ring buffer.
|
Static facade over shared-memory message queues and a request/reply matcher.
Queues are addressed by queue id (qid) or an optional global name. All static calls are safe from any process/thread; waits block on named semaphores with a timeout. Returned DataMessages are heap copies owned by the caller.
uint32 qid;
if (m) { ...; delete m; }
The central Psyclone data container: a self-contained binary message with typed, named user entries.
static bool AddMessageToQueue(uint32 qid, DataMessage *msg)
Append a message (copied into shared memory).
static DataMessage * WaitForMessageQueue(uint32 qid, uint32 ms)
Block up to ms milliseconds for a message.
static bool CreateMessageQueue(uint32 &qid, const char *name=NULL)
Create a new shared queue.
Definition at line 48 of file MemoryQueues.h.
◆ MessageQueue()
| cmlabs::MessageQueue::MessageQueue |
( |
char * | data, |
|
|
uint32 | size ) |
Attach this wrapper to a raw queue region.
- Parameters
-
| data | Mapped region. |
| size | Region bytes. |
◆ ~MessageQueue()
| cmlabs::MessageQueue::~MessageQueue |
( |
| ) |
|
◆ AddMessageToQueue()
| bool cmlabs::MessageQueue::AddMessageToQueue |
( |
uint32 | qid, |
|
|
DataMessage * | msg ) |
|
static |
Append a message (copied into shared memory).
Caller keeps ownership of msg.
- Returns
- true on success.
◆ AddReply()
| bool cmlabs::MessageQueue::AddReply |
( |
uint32 | reqID, |
|
|
bool | success, |
|
|
DataMessage * | msg ) |
|
static |
Post the reply for request reqID.
- Parameters
-
| reqID | Request id being answered. |
| success | Outcome flag. |
| msg | Reply payload (copied). |
- Returns
- true on success.
◆ AddRequest()
| bool cmlabs::MessageQueue::AddRequest |
( |
DataMessage * | msg, |
|
|
uint32 & | reqID ) |
|
static |
Submit a request message.
- Parameters
-
| msg | Request (caller keeps ownership). |
| reqID | Receives the request id. |
- Returns
- true on success.
◆ changeData()
| cmlabs::MessageQueue::changeData |
( |
char * | data | ) |
|
Re-point the wrapper at a new mapped address.
- Note
- Missing return type — pre-C++11 implicit int; left untouched.
◆ changeSize()
| cmlabs::MessageQueue::changeSize |
( |
uint32 | size | ) |
|
Update the wrapper's notion of the region size.
- Note
- Missing return type — pre-C++11 implicit int; left untouched.
◆ CreateMessageQueue()
| bool cmlabs::MessageQueue::CreateMessageQueue |
( |
uint32 & | qid, |
|
|
const char * | name = NULL ) |
|
static |
Create a new shared queue.
- Parameters
-
| qid | Receives the queue id. |
| name | Optional global name. |
- Returns
- true on success.
◆ DestroyMessageQueue()
| bool cmlabs::MessageQueue::DestroyMessageQueue |
( |
uint32 | qid | ) |
|
|
static |
Destroy a queue and release its shared memory.
- Returns
- true on success.
◆ GetMessageQueueByName()
| bool cmlabs::MessageQueue::GetMessageQueueByName |
( |
uint32 & | qid, |
|
|
const char * | name ) |
|
static |
Look up a queue id by its global name.
- Returns
- true if found.
◆ GetMessageQueueSize()
| uint32 cmlabs::MessageQueue::GetMessageQueueSize |
( |
uint32 | qid | ) |
|
|
static |
- Returns
- Number of messages currently queued in qid.
◆ GetRequestCount()
| uint32 cmlabs::MessageQueue::GetRequestCount |
( |
| ) |
|
|
static |
- Returns
- Number of requests currently outstanding.
◆ UnitTest()
| bool cmlabs::MessageQueue::UnitTest |
( |
| ) |
|
|
static |
Self-test of queue + request logic.
- Returns
- true if all checks pass.
◆ UnitTestQueues()
| bool cmlabs::MessageQueue::UnitTestQueues |
( |
| ) |
|
|
static |
◆ WaitForMessageQueue()
| DataMessage * cmlabs::MessageQueue::WaitForMessageQueue |
( |
uint32 | qid, |
|
|
uint32 | ms ) |
|
static |
Block up to ms milliseconds for a message.
- Returns
- Heap copy owned by caller, or NULL on timeout.
◆ WaitForReply()
| bool cmlabs::MessageQueue::WaitForReply |
( |
uint32 | reqID, |
|
|
uint32 | ms, |
|
|
uint8 & | status, |
|
|
DataMessage ** | outMsg ) |
|
static |
Block up to ms for the reply to reqID.
- Parameters
-
| reqID | Request id to wait for. |
| ms | Timeout in ms. |
| status | Receives the request status. |
| outMsg | Receives a caller-owned reply copy (may be NULL). |
- Returns
- true if a reply arrived.
◆ QueueTest
◆ header
Mapped queue header (points into shared memory; not owned).
Definition at line 85 of file MemoryQueues.h.
The documentation for this class was generated from the following file: