|
CMSDK 2.0.1
Cross-platform C++ base library and SDK for the Psyclone AIOS platform
|
Owner of a named request/reply segment; serves incoming client requests. More...
#include <MemoryRequestServer.h>
Public Member Functions | |
| MemoryRequestServer () | |
| ~MemoryRequestServer () | |
| bool | init (const char *memoryName, uint32 maxConnectionCount, uint32 maxQueueSize, uint32 maxRequestCount) |
| Create the named server segment. | |
| bool | shutdown () |
| Detach and mark the server stopped. | |
| DataMessage * | waitForRequest (uint32 ms) |
| Block up to ms milliseconds for the next client request. | |
| bool | setRequestStatus (uint64 id, uint16 status) |
| Advance request id's MEMORYREQUEST_* status. | |
| bool | replyToRequest (uint64 id, DataMessage *msg) |
| Send the reply for request id (copied; caller keeps ownership). | |
Static Public Member Functions | |
| static bool | UnitTest () |
| Self-test of the request/reply round trip. | |
Owner of a named request/reply segment; serves incoming client requests.
Typical loop: init() once, then repeatedly waitForRequest() → process → replyToRequest(). Returned messages are caller-owned heap copies. maintenance() is invoked internally to reap dead connections and stale requests.
Definition at line 30 of file MemoryRequestServer.h.
| cmlabs::MemoryRequestServer::MemoryRequestServer | ( | ) |
Definition at line 11 of file MemoryRequestServer.cpp.
Referenced by UnitTest().
| cmlabs::MemoryRequestServer::~MemoryRequestServer | ( | ) |
Definition at line 17 of file MemoryRequestServer.cpp.
References shutdown().
| bool cmlabs::MemoryRequestServer::init | ( | const char * | memoryName, |
| uint32 | maxConnectionCount, | ||
| uint32 | maxQueueSize, | ||
| uint32 | maxRequestCount ) |
Create the named server segment.
| memoryName | Global segment name clients connect to. |
| maxConnectionCount | Maximum simultaneous client connections. |
| maxQueueSize | Byte size of each connection's queue area. |
| maxRequestCount | Capacity of the request-status table. |
Definition at line 22 of file MemoryRequestServer.cpp.
References cmlabs::utils::CreateSharedMemorySegment(), cmlabs::GetTimeNow(), cmlabs::MemoryRequestQueues::InitRequestMap(), MEMORYREQUESTSERVER_INIT, MEMORYREQUESTSERVERID, shutdown(), cmlabs::utils::strcpyavail(), and cmlabs::utils::StringFormat().
Referenced by UnitTest().
| bool cmlabs::MemoryRequestServer::replyToRequest | ( | uint64 | id, |
| DataMessage * | msg ) |
Send the reply for request id (copied; caller keeps ownership).
Definition at line 99 of file MemoryRequestServer.cpp.
Referenced by UnitTest().
| bool cmlabs::MemoryRequestServer::setRequestStatus | ( | uint64 | id, |
| uint16 | status ) |
Advance request id's MEMORYREQUEST_* status.
Definition at line 94 of file MemoryRequestServer.cpp.
| bool cmlabs::MemoryRequestServer::shutdown | ( | ) |
Detach and mark the server stopped.
Definition at line 70 of file MemoryRequestServer.cpp.
References cmlabs::utils::CloseSharedMemorySegment().
Referenced by init(), and ~MemoryRequestServer().
|
static |
Self-test of the request/reply round trip.
Definition at line 110 of file MemoryRequestServer.cpp.
References cmlabs::MemoryRequestConnection::connect(), cmlabs::unittest::detail(), cmlabs::unittest::fail(), cmlabs::DataMessage::getFrom(), cmlabs::DataMessage::getReference(), cmlabs::MemoryRequestConnection::getRequestStatus(), cmlabs::GetTimeNow(), init(), cmlabs::MemoryRequestConnection::makeRequest(), MEMORYREQUEST_REPLIED, MEMORYREQUEST_SUBMITTED, MemoryRequestServer(), cmlabs::unittest::metric(), cmlabs::unittest::progress(), replyToRequest(), cmlabs::DataMessage::setTo(), waitForRequest(), and cmlabs::MemoryRequestConnection::waitForRequestReply().
Referenced by cmlabs::Register_MemoryRequestServer_Tests().
| DataMessage * cmlabs::MemoryRequestServer::waitForRequest | ( | uint32 | ms | ) |
Block up to ms milliseconds for the next client request.
Definition at line 89 of file MemoryRequestServer.cpp.
Referenced by UnitTest().