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

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: