|
CMSDK 2.0.1
Cross-platform C++ base library and SDK for the Psyclone AIOS platform
|
Client endpoint connected to a named shared-memory request server. More...
#include <MemoryRequestConnection.h>
Public Member Functions | |
| MemoryRequestConnection () | |
| ~MemoryRequestConnection () | |
| bool | connect (const char *memoryName) |
| Attach to the named server segment and claim a connection slot. | |
| bool | shutdown () |
| Release the connection slot and detach. | |
| uint64 | makeRequest (DataMessage *msg) |
| Submit a request to the server. | |
| uint16 | getRequestStatus (uint64 id, uint64 &createdTime, uint64 &lastUpdateTime) |
| Query a request's status. | |
| DataMessage * | waitForRequestReply (uint32 ms) |
| Wait for the reply to this connection's most recent request. | |
| DataMessage * | waitForRequestReply (uint64 id, uint32 ms) |
| Wait for the reply to request id (out-of-order replies are cached). | |
| DataMessage * | waitForRequest (uint32 ms) |
| Server side: wait for the next incoming request. | |
| bool | setRequestStatus (uint64 id, uint16 status) |
| Server side: advance a request's status. | |
| bool | replyToRequest (uint64 id, DataMessage *msg) |
| Server side: send the reply for id (copied). | |
Client endpoint connected to a named shared-memory request server.
One instance per client; not shareable across threads without external locking (it keeps per-connection cursors and a reply cache). All returned DataMessages are heap copies owned by the caller. Wait calls block up to ms milliseconds.
Definition at line 65 of file MemoryRequestConnection.h.
| cmlabs::MemoryRequestConnection::MemoryRequestConnection | ( | ) |
Definition at line 9 of file MemoryRequestConnection.cpp.
| cmlabs::MemoryRequestConnection::~MemoryRequestConnection | ( | ) |
Definition at line 19 of file MemoryRequestConnection.cpp.
References shutdown().
| bool cmlabs::MemoryRequestConnection::connect | ( | const char * | memoryName | ) |
Attach to the named server segment and claim a connection slot.
| memoryName | Global name chosen by the server. |
Definition at line 23 of file MemoryRequestConnection.cpp.
References cmlabs::MemoryRequestQueues::CheckRequestMap(), cmlabs::GetTimeNow(), cmlabs::MemoryRequestQueues::InitQueue(), cmlabs::utils::OpenSharedMemorySegment(), shutdown(), and cmlabs::utils::StringFormat().
Referenced by cmlabs::MemoryRequestServer::UnitTest().
| uint16 cmlabs::MemoryRequestConnection::getRequestStatus | ( | uint64 | id, |
| uint64 & | createdTime, | ||
| uint64 & | lastUpdateTime ) |
Query a request's status.
Definition at line 139 of file MemoryRequestConnection.cpp.
References cmlabs::MemoryRequestQueues::GetRequestStatus(), and MEMORYREQUEST_ERROR.
Referenced by cmlabs::MemoryRequestServer::UnitTest().
| uint64 cmlabs::MemoryRequestConnection::makeRequest | ( | DataMessage * | msg | ) |
Submit a request to the server.
| msg | Request (copied; caller keeps ownership). |
Definition at line 109 of file MemoryRequestConnection.cpp.
References cmlabs::MemoryRequestQueues::AddNewRequest(), cmlabs::MemoryRequestQueues::AddToQueue(), cmlabs::MemoryRequestQueues::CheckQueue(), cmlabs::MemoryRequestQueues::CloseRequest(), cmlabs::DataMessage::getTo(), MEMORYREQUEST_INIT, MEMORYREQUEST_SUBMITTED, cmlabs::DataMessage::setFrom(), cmlabs::DataMessage::setReference(), cmlabs::MemoryRequestQueues::SetRequestStatus(), cmlabs::utils::SignalSemaphore(), and cmlabs::utils::StringFormat().
Referenced by cmlabs::MemoryRequestServer::UnitTest().
| bool cmlabs::MemoryRequestConnection::replyToRequest | ( | uint64 | id, |
| DataMessage * | msg ) |
Server side: send the reply for id (copied).
Definition at line 211 of file MemoryRequestConnection.cpp.
References cmlabs::MemoryRequestQueues::AddToQueue(), cmlabs::MemoryRequestQueues::CheckQueue(), cmlabs::MemoryRequestQueues::GetRequestStatus(), cmlabs::DataMessage::getTo(), MEMORYREQUEST_ERROR, MEMORYREQUEST_REPLIED, MEMORYREQUEST_SUBMITTED, cmlabs::DataMessage::setFrom(), cmlabs::DataMessage::setReference(), cmlabs::MemoryRequestQueues::SetRequestStatus(), cmlabs::utils::SignalSemaphore(), and cmlabs::utils::StringFormat().
| bool cmlabs::MemoryRequestConnection::setRequestStatus | ( | uint64 | id, |
| uint16 | status ) |
Server side: advance a request's status.
Definition at line 200 of file MemoryRequestConnection.cpp.
References cmlabs::MemoryRequestQueues::SetRequestStatus().
| bool cmlabs::MemoryRequestConnection::shutdown | ( | ) |
Release the connection slot and detach.
Definition at line 79 of file MemoryRequestConnection.cpp.
References cmlabs::utils::CloseSharedMemorySegment(), and cmlabs::utils::Mutex::leave().
Referenced by connect(), and ~MemoryRequestConnection().
| DataMessage * cmlabs::MemoryRequestConnection::waitForRequest | ( | uint32 | ms | ) |
Server side: wait for the next incoming request.
| ms | Timeout in ms. |
Definition at line 184 of file MemoryRequestConnection.cpp.
References cmlabs::DataMessage::getReference(), MEMORYREQUEST_RECEIVED, and cmlabs::MemoryRequestQueues::SetRequestStatus().
| DataMessage * cmlabs::MemoryRequestConnection::waitForRequestReply | ( | uint32 | ms | ) |
Wait for the reply to this connection's most recent request.
| ms | Timeout in ms. |
Definition at line 166 of file MemoryRequestConnection.cpp.
References cmlabs::MemoryRequestQueues::CloseRequest(), cmlabs::DataMessage::getReference(), MEMORYREQUEST_REPLYRECEIVED, and cmlabs::MemoryRequestQueues::SetRequestStatus().
Referenced by cmlabs::MemoryRequestServer::UnitTest().
| DataMessage * cmlabs::MemoryRequestConnection::waitForRequestReply | ( | uint64 | id, |
| uint32 | ms ) |
Wait for the reply to request id (out-of-order replies are cached).
| id | Request id to wait for. |
| ms | Timeout in ms. |
Definition at line 260 of file MemoryRequestConnection.cpp.
References cmlabs::MemoryRequestQueues::CloseRequest(), cmlabs::DataMessage::getReference(), cmlabs::GetTimeAgeMS(), cmlabs::GetTimeNow(), MEMORYREQUEST_REPLYRECEIVED, and cmlabs::MemoryRequestQueues::SetRequestStatus().