Class SSEFaultHandler
Defined in File sse_fault_handler.hpp
Class Documentation
-
class SSEFaultHandler
Handler for Server-Sent Events (SSE) fault streaming.
Provides real-time fault event notifications via SSE at:
GET /faults/stream
Events streamed:
fault_confirmed: When a fault transitions to CONFIRMED status
fault_cleared: When a fault is manually cleared
fault_updated: When fault data changes (occurrence_count, sources)
Features:
Multi-client support (multiple browsers can connect simultaneously)
Keepalive every 30 seconds to prevent connection timeout
Automatic reconnection support via Last-Event-ID header
Replay buffer of up to 100 most recent events for reconnecting clients; when the buffer is full, older events are discarded (FIFO), so clients that are disconnected for long periods may miss some events
Public Functions
Construct SSE fault handler with shared context.
- Parameters:
ctx – The shared handler context
client_tracker – Shared SSE client counter (across all SSE handlers)
Test-only constructor that overrides the keepalive interval.
- Parameters:
ctx – The shared handler context
client_tracker – Shared SSE client counter (across all SSE handlers)
keepalive_interval – Must be positive; non-positive values fall back to the 30s default.
-
~SSEFaultHandler()
Destructor - cleanup subscription.
-
SSEFaultHandler(const SSEFaultHandler&) = delete
-
SSEFaultHandler &operator=(const SSEFaultHandler&) = delete
-
SSEFaultHandler(SSEFaultHandler&&) = delete
-
SSEFaultHandler &operator=(SSEFaultHandler&&) = delete
-
void handle_stream(const httplib::Request &req, httplib::Response &res)
Handle GET /faults/stream - SSE stream endpoint.
Establishes a long-lived connection and streams fault events in SSE format:
event: fault_confirmed data: {"event_type":"fault_confirmed","fault":{...},"timestamp":1234567890.123} event: fault_cleared data: {"event_type":"fault_cleared","fault":{...},"timestamp":1234567890.456}
-
size_t connected_clients() const
Get the number of currently connected SSE clients.