FastLED 3.10.8
Loading...
Searching...
No Matches
fl::net::http::HttpStreamTransport Class Referenceabstract

Detailed Description

Base class for HTTP streaming transport Implements RequestSource and ResponseSink for Remote class Manages HTTP connection lifecycle with chunked encoding.

Definition at line 54 of file stream_transport.h.

#include <stream_transport.h>

+ Collaboration diagram for fl::net::http::HttpStreamTransport:

Classes

struct  PendingCall
 
struct  PendingStream
 

Public Types

using StateCallback = fl::function<void()>
 Connection state callback.
 

Public Member Functions

 HttpStreamTransport (const fl::string &host, u16 port, u32 heartbeatIntervalMs=30000) FL_NO_EXCEPT
 Constructor.
 
virtual ~HttpStreamTransport () FL_NO_EXCEPT
 Virtual destructor.
 
virtual bool connect () FL_NO_EXCEPT=0
 Connect to server.
 
virtual void disconnect () FL_NO_EXCEPT=0
 Disconnect from server.
 
u32 getHeartbeatInterval () const FL_NO_EXCEPT
 Get heartbeat interval.
 
u32 getTimeout () const FL_NO_EXCEPT
 Get connection timeout.
 
virtual bool isConnected () const FL_NO_EXCEPT=0
 Check if connected.
 
fl::optional< fl::json > readRequest () FL_NO_EXCEPT
 Read next JSON-RPC request from stream Non-blocking, returns nullopt if no complete request available.
 
fl::task::Promise< fl::json > rpc (const fl::json &fullRequest) FL_NO_EXCEPT
 Send a pre-built JSON-RPC request.
 
fl::task::Promise< fl::json > rpc (const fl::string &method, const fl::json &params) FL_NO_EXCEPT
 Send a JSON-RPC request, returns promise that resolves with the final response.
 
StreamHandle rpcStream (const fl::json &fullRequest) FL_NO_EXCEPT
 Send a streaming pre-built JSON-RPC request.
 
StreamHandle rpcStream (const fl::string &method, const fl::json &params) FL_NO_EXCEPT
 Send a streaming JSON-RPC request, returns StreamHandle for intermediate data.
 
void setHeartbeatInterval (u32 intervalMs) FL_NO_EXCEPT
 Set heartbeat interval.
 
void setOnConnect (StateCallback callback) FL_NO_EXCEPT
 Set callback for connection established.
 
void setOnDisconnect (StateCallback callback) FL_NO_EXCEPT
 Set callback for connection lost.
 
void setTimeout (u32 timeoutMs) FL_NO_EXCEPT
 Set connection timeout.
 
void update (u32 currentTimeMs) FL_NO_EXCEPT
 Update connection state (handles reconnection, heartbeat) Call this in main loop.
 
void writeResponse (const fl::json &response) FL_NO_EXCEPT
 Write JSON-RPC response to stream.
 

Protected Member Functions

virtual u32 getCurrentTimeMs () const FL_NO_EXCEPT
 Get current time in milliseconds.
 
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.
 
virtual void triggerReconnect () FL_NO_EXCEPT
 Trigger reconnection (for subclasses to override)
 

Protected Attributes

HttpConnection mConnection
 

Private Member Functions

void checkHeartbeatTimeout (u32 currentTimeMs) FL_NO_EXCEPT
 
void handleConnectionStateChange (u32 currentTimeMs) FL_NO_EXCEPT
 
void parseChunkedMessages () FL_NO_EXCEPT
 
bool processIncomingData () FL_NO_EXCEPT
 
bool resolveRpc (const fl::json &msg, const fl::string &idKey) FL_NO_EXCEPT
 
bool resolveRpcStream (const fl::json &msg, const fl::string &idKey) FL_NO_EXCEPT
 
void sendHeartbeat () FL_NO_EXCEPT
 

Static Private Member Functions

static fl::string idToString (const fl::json &id) FL_NO_EXCEPT
 

Private Attributes

u32 mHeartbeatInterval
 
fl::vector< fl::json > mIncomingQueue
 
u32 mLastHeartbeatReceived
 
u32 mLastHeartbeatSent
 
int mNextCallId = 1
 
StateCallback mOnConnect
 
StateCallback mOnDisconnect
 
fl::flat_map< fl::string, PendingCall, fl::StringFastLess > mPendingCalls
 
fl::flat_map< fl::string, PendingStream, fl::StringFastLess > mPendingStreams
 
ChunkedReader mReader
 
u32 mTimeoutMs
 
bool mWasConnected
 
ChunkedWriter mWriter
 

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