FastLED 3.10.8
Loading...
Searching...
No Matches
fl::Server Class Reference

Detailed Description

JSON-RPC server with callback-based I/O.

Coordinates JSON-RPC request/response flow between source and sink callbacks. Provides generic I/O coordination layer for JSON-RPC servers.

Usage: Server server( []() { return getJsonRpcRequest(); }, // RequestSource [](const json& r) { sendJsonRpcResponse(r); } // ResponseSink ); server.setRequestHandler([](const json& req) { return processJsonRpc(req); }); server.update(); // pull + push

Definition at line 29 of file server.h.

#include <server.h>

+ Inheritance diagram for fl::Server:
+ Collaboration diagram for fl::Server:

Public Types

using RequestHandler = fl::function<fl::json(const fl::json&)>
 
using RequestSource = fl::function<fl::optional<fl::json>()>
 
using ResponseSink = fl::function<void(const fl::json&)>
 

Public Member Functions

 Server () FL_NO_EXCEPT
 Default constructor.
 
 Server (const Server &) FL_NO_EXCEPT=delete
 
 Server (RequestSource source, ResponseSink sink) FL_NO_EXCEPT
 Construct with I/O callbacks.
 
 Server (Server &&) FL_NO_EXCEPT=default
 
virtual ~Server () FL_NO_EXCEPT=default
 
Server & operator= (const Server &) FL_NO_EXCEPT=delete
 
Server & operator= (Server &&) FL_NO_EXCEPT=default
 
size_t pull () FL_NO_EXCEPT
 Pull requests from source, process, queue responses.
 
size_t push () FL_NO_EXCEPT
 Push queued responses to sink.
 
void setRequestHandler (RequestHandler handler) FL_NO_EXCEPT
 Set request handler.
 
void setRequestSource (RequestSource source) FL_NO_EXCEPT
 Set request source callback.
 
void setResponseSink (ResponseSink sink) FL_NO_EXCEPT
 Set response sink callback.
 
void setResponseStreamSink (ResponseStreamSink sink) FL_NO_EXCEPT
 Set streaming response sink callback.
 
size_t update () FL_NO_EXCEPT
 Main update: pull + push.
 

Protected Attributes

fl::vector< fl::json > mOutgoingQueue
 
RequestHandler mRequestHandler
 
RequestSource mRequestSource
 
ResponseSink mResponseSink
 

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