Project
Loading...
Searching...
No Matches
o2::framework::StatusWebSocketHandler Struct Reference

#include <StatusWebSocketHandler.h>

Inherits o2::framework::WebSocketHandler.

Public Member Functions

 StatusWebSocketHandler (DriverServerContext &context, WSDPLHandler *handler)
 
 ~StatusWebSocketHandler () override
 
void headers (std::map< std::string, std::string > const &headers) override
 Sends the minimal snapshot on handshake completion.
 
void frame (char const *data, size_t s) override
 Handles incoming commands from the MCP client.
 
void beginChunk () override
 Invoked before processing the next round of input.
 
void endChunk () override
 Invoked whenever we have no more input to process.
 
void beginFragmentation () override
 FIXME: not implemented.
 
void endFragmentation () override
 FIXME: not implemented.
 
void control (char const *frame, size_t s) override
 FIXME: not implemented.
 
void sendSnapshot ()
 Send a minimal JSON snapshot (device list + basic state, no metrics/logs).
 
void sendUpdate (size_t deviceIndex)
 
void sendNewLogs (size_t deviceIndex)
 
- Public Member Functions inherited from o2::framework::WebSocketHandler
virtual ~WebSocketHandler ()=default
 

Additional Inherited Members

- Public Attributes inherited from o2::framework::WebSocketHandler
size_t remainingSize = 0
 Bytes which are still to be received for the previous, half delivered frame.
 
size_t pendingSize = 0
 Bytes which are already there from the previous, half delivered frame.
 
charpendingBuffer = nullptr
 A buffer large enough to contain the next frame to be processed.
 
size_t pendingHeaderSize = 0
 Bytes from an incomplete header.
 
charpendingHeader = nullptr
 

Detailed Description

WebSocket handler for the /status endpoint.

Protocol (client → driver): {"cmd":"list_metrics","device":"<name>"} → driver replies with {"type":"metrics_list","device":"<name>","metrics":[...]}

{"cmd":"subscribe","device":"<name>","metrics":["m1","m2",...]} → driver starts including those metrics in subsequent update frames

{"cmd":"unsubscribe","device":"<name>","metrics":["m1","m2",...]} → driver stops sending those metrics

{"cmd":"subscribe_logs","device":"<name>"} → driver starts pushing new log lines for the device

{"cmd":"unsubscribe_logs","device":"<name>"} → driver stops pushing log lines for the device

Protocol (driver → client): {"type":"snapshot","devices":[{"name","pid","active","streamingState","deviceState"},...]} → sent once on connect; contains no metrics or logs

{"type":"update","device":<index>,"name":"<name>","metrics":{<subscribed & changed>}} → sent after each metrics cycle for devices with subscribed metrics that changed

{"type":"metrics_list","device":"<name>","metrics":["m1","m2",...]} → reply to list_metrics command

{"type":"log","device":"<name>","level":"<level>","line":"<text>"} → pushed for each new log line from a subscribed device

Definition at line 56 of file StatusWebSocketHandler.h.

Constructor & Destructor Documentation

◆ StatusWebSocketHandler()

o2::framework::StatusWebSocketHandler::StatusWebSocketHandler ( DriverServerContext context,
WSDPLHandler handler 
)

Definition at line 218 of file StatusWebSocketHandler.cxx.

◆ ~StatusWebSocketHandler()

o2::framework::StatusWebSocketHandler::~StatusWebSocketHandler ( )
override

Definition at line 223 of file StatusWebSocketHandler.cxx.

Member Function Documentation

◆ beginChunk()

void o2::framework::StatusWebSocketHandler::beginChunk ( )
inlineoverridevirtual

Invoked before processing the next round of input.

Reimplemented from o2::framework::WebSocketHandler.

Definition at line 64 of file StatusWebSocketHandler.h.

◆ beginFragmentation()

void o2::framework::StatusWebSocketHandler::beginFragmentation ( )
inlineoverridevirtual

FIXME: not implemented.

Reimplemented from o2::framework::WebSocketHandler.

Definition at line 66 of file StatusWebSocketHandler.h.

◆ control()

void o2::framework::StatusWebSocketHandler::control ( char const *  frame,
size_t  s 
)
inlineoverridevirtual

FIXME: not implemented.

Reimplemented from o2::framework::WebSocketHandler.

Definition at line 68 of file StatusWebSocketHandler.h.

◆ endChunk()

void o2::framework::StatusWebSocketHandler::endChunk ( )
inlineoverridevirtual

Invoked whenever we have no more input to process.

Reimplemented from o2::framework::WebSocketHandler.

Definition at line 65 of file StatusWebSocketHandler.h.

◆ endFragmentation()

void o2::framework::StatusWebSocketHandler::endFragmentation ( )
inlineoverridevirtual

FIXME: not implemented.

Reimplemented from o2::framework::WebSocketHandler.

Definition at line 67 of file StatusWebSocketHandler.h.

◆ frame()

void o2::framework::StatusWebSocketHandler::frame ( char const *  data,
size_t  s 
)
overridevirtual

Handles incoming commands from the MCP client.

Reimplemented from o2::framework::WebSocketHandler.

Definition at line 234 of file StatusWebSocketHandler.cxx.

◆ headers()

void o2::framework::StatusWebSocketHandler::headers ( std::map< std::string, std::string > const &  headers)
overridevirtual

Sends the minimal snapshot on handshake completion.

Reimplemented from o2::framework::WebSocketHandler.

Definition at line 229 of file StatusWebSocketHandler.cxx.

◆ sendNewLogs()

void o2::framework::StatusWebSocketHandler::sendNewLogs ( size_t  deviceIndex)

Push any log lines for deviceIndex that arrived since the last call. No-op if the device is not subscribed for logs.

Definition at line 459 of file StatusWebSocketHandler.cxx.

◆ sendSnapshot()

void o2::framework::StatusWebSocketHandler::sendSnapshot ( )

Send a minimal JSON snapshot (device list + basic state, no metrics/logs).

Definition at line 263 of file StatusWebSocketHandler.cxx.

◆ sendUpdate()

void o2::framework::StatusWebSocketHandler::sendUpdate ( size_t  deviceIndex)

Push an update for device at deviceIndex. Only metrics that are both changed[] and subscribed are included. No-op if nothing subscribed or nothing changed for this device.

Definition at line 299 of file StatusWebSocketHandler.cxx.


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