CMSDK 2.0.1
Cross-platform C++ base library and SDK for the Psyclone AIOS platform
Loading...
Searching...
No Matches
cmlabs::MemoryRequestServer Class Reference

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.
DataMessagewaitForRequest (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.

Detailed Description

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.

server.init("psyclone.requests", 32, 1<<20, 1024);
while (running) {
DataMessage* req = server.waitForRequest(100);
if (req) { server.replyToRequest(req->getRequestID(), reply); delete req; }
}
server.shutdown();
The central Psyclone data container: a self-contained binary message with typed, named user entries.
bool replyToRequest(uint64 id, DataMessage *msg)
Send the reply for request id (copied; caller keeps ownership).
bool shutdown()
Detach and mark the server stopped.
DataMessage * waitForRequest(uint32 ms)
Block up to ms milliseconds for the next client request.
bool init(const char *memoryName, uint32 maxConnectionCount, uint32 maxQueueSize, uint32 maxRequestCount)
Create the named server segment.

Definition at line 30 of file MemoryRequestServer.h.

Constructor & Destructor Documentation

◆ MemoryRequestServer()

cmlabs::MemoryRequestServer::MemoryRequestServer ( )

Definition at line 11 of file MemoryRequestServer.cpp.

Referenced by UnitTest().

◆ ~MemoryRequestServer()

cmlabs::MemoryRequestServer::~MemoryRequestServer ( )

Definition at line 17 of file MemoryRequestServer.cpp.

References shutdown().

Member Function Documentation

◆ init()

bool cmlabs::MemoryRequestServer::init ( const char * memoryName,
uint32 maxConnectionCount,
uint32 maxQueueSize,
uint32 maxRequestCount )

Create the named server segment.

Parameters
memoryNameGlobal segment name clients connect to.
maxConnectionCountMaximum simultaneous client connections.
maxQueueSizeByte size of each connection's queue area.
maxRequestCountCapacity of the request-status table.
Returns
true on success.

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().

◆ replyToRequest()

bool cmlabs::MemoryRequestServer::replyToRequest ( uint64 id,
DataMessage * msg )

Send the reply for request id (copied; caller keeps ownership).

Returns
true on success.

Definition at line 99 of file MemoryRequestServer.cpp.

Referenced by UnitTest().

◆ setRequestStatus()

bool cmlabs::MemoryRequestServer::setRequestStatus ( uint64 id,
uint16 status )

Advance request id's MEMORYREQUEST_* status.

Returns
true on success.

Definition at line 94 of file MemoryRequestServer.cpp.

◆ shutdown()

bool cmlabs::MemoryRequestServer::shutdown ( )

Detach and mark the server stopped.

Returns
true on success.

Definition at line 70 of file MemoryRequestServer.cpp.

References cmlabs::utils::CloseSharedMemorySegment().

Referenced by init(), and ~MemoryRequestServer().

◆ UnitTest()

◆ waitForRequest()

DataMessage * cmlabs::MemoryRequestServer::waitForRequest ( uint32 ms)

Block up to ms milliseconds for the next client request.

Returns
Caller-owned request message or NULL on timeout.

Definition at line 89 of file MemoryRequestServer.cpp.

Referenced by UnitTest().


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