void update(u32 currentTimeMs) FL_NO_EXCEPT
Update connection state (handles reconnection, heartbeat) Call this in main loop.
void handleConnectionStateChange(u32 currentTimeMs) FL_NO_EXCEPT
bool resolveRpc(const fl::json &msg, const fl::string &idKey) FL_NO_EXCEPT
void checkHeartbeatTimeout(u32 currentTimeMs) FL_NO_EXCEPT
fl::optional< fl::json > readRequest() FL_NO_EXCEPT
Read next JSON-RPC request from stream Non-blocking, returns nullopt if no complete request available...
void writeResponse(const fl::json &response) FL_NO_EXCEPT
Write JSON-RPC response to stream.
virtual u32 getCurrentTimeMs() const FL_NO_EXCEPT
Get current time in milliseconds.
virtual bool connect() FL_NO_EXCEPT=0
Connect to server.
virtual void triggerReconnect() FL_NO_EXCEPT
Trigger reconnection (for subclasses to override)
virtual int recvData(fl::span< u8 > buffer) FL_NO_EXCEPT=0
Receive raw data from connection.
virtual int sendData(fl::span< const u8 > data) FL_NO_EXCEPT=0
Send raw data over connection.
HttpStreamTransport(const fl::string &host, u16 port, u32 heartbeatIntervalMs=30000) FL_NO_EXCEPT
Constructor.
fl::flat_map< fl::string, PendingCall, fl::StringFastLess > mPendingCalls
bool resolveRpcStream(const fl::json &msg, const fl::string &idKey) FL_NO_EXCEPT
void setTimeout(u32 timeoutMs) FL_NO_EXCEPT
Set connection timeout.
void setHeartbeatInterval(u32 intervalMs) FL_NO_EXCEPT
Set heartbeat interval.
u32 mLastHeartbeatReceived
fl::vector< fl::json > mIncomingQueue
fl::function< void()> StateCallback
Connection state callback.
void parseChunkedMessages() FL_NO_EXCEPT
static fl::string idToString(const fl::json &id) FL_NO_EXCEPT
StreamHandle rpcStream(const fl::string &method, const fl::json ¶ms) FL_NO_EXCEPT
Send a streaming JSON-RPC request, returns StreamHandle for intermediate data.
fl::task::Promise< fl::json > rpc(const fl::string &method, const fl::json ¶ms) FL_NO_EXCEPT
Send a JSON-RPC request, returns promise that resolves with the final response.
fl::flat_map< fl::string, PendingStream, fl::StringFastLess > mPendingStreams
virtual void disconnect() FL_NO_EXCEPT=0
Disconnect from server.
virtual bool isConnected() const FL_NO_EXCEPT=0
Check if connected.
bool processIncomingData() FL_NO_EXCEPT
u32 getHeartbeatInterval() const FL_NO_EXCEPT
Get heartbeat interval.
void setOnDisconnect(StateCallback callback) FL_NO_EXCEPT
Set callback for connection lost.
void sendHeartbeat() FL_NO_EXCEPT
StateCallback mOnDisconnect
void setOnConnect(StateCallback callback) FL_NO_EXCEPT
Set callback for connection established.
u32 getTimeout() const FL_NO_EXCEPT
Get connection timeout.
HttpConnection mConnection
Base class for HTTP streaming transport Implements RequestSource and ResponseSink for Remote class Ma...
fl::shared_ptr< fl::function< void(const fl::json &)> > updateCallback
fl::task::Promise< fl::json > promise
fl::task::Promise< fl::json > promise
StreamHandle & then(fl::function< void(const fl::json &)> cb) FL_NO_EXCEPT
Register callback for final result.
StreamHandle & catch_(fl::function< void(const fl::task::Error &)> cb) FL_NO_EXCEPT
Register callback for errors.
friend class HttpStreamTransport
fl::task::Promise< fl::json > mPromise
fl::shared_ptr< fl::function< void(const fl::json &)> > mUpdateCallback
StreamHandle() FL_NO_EXCEPT=default
bool valid() const FL_NO_EXCEPT
Check if handle is valid.
StreamHandle & onData(fl::function< void(const fl::json &)> cb) FL_NO_EXCEPT
Register callback for intermediate stream data.
fl::task::Promise< fl::json > & promise() FL_NO_EXCEPT
Access the underlying promise.
Handle for ASYNC_STREAM calls Provides onData() for intermediate updates, plus then()/catch_() for fi...
Promise class that provides fluent .then() and .catch_() semantics This is a lightweight wrapper arou...
u8 u8 fract8 blur_amount FL_NO_EXCEPT
Base definition for an LED controller.
Promise-based fluent API for FastLED - standalone async primitives.