#[non_exhaustive]pub enum DaemonEvent {
Show 13 variants
BuildResult {
build_id: BuildId,
result: Result<(), String>,
},
SpawnResult {
dataflow_id: DataflowId,
result: Result<(), String>,
},
AllNodesReady {
dataflow_id: DataflowId,
exited_before_subscribe: Vec<NodeId>,
},
AllNodesFinished {
dataflow_id: DataflowId,
result: DataflowDaemonResult,
},
Heartbeat {
ft_stats: Option<FaultToleranceSnapshot>,
},
ZenohListenEndpoint {
endpoint: Option<String>,
},
StatusReport {
running_dataflows: Vec<DataflowStatusEntry>,
},
Log(LogMessage),
Exit,
NodeMetrics {
dataflow_id: DataflowId,
metrics: BTreeMap<NodeId, NodeMetrics>,
network: Option<NetworkMetrics>,
},
TopicDebugData {
dataflow_id: DataflowId,
subscription_ids: Vec<Uuid>,
payload: Vec<u8>,
},
StateCatchUpAck {
dataflow_id: DataflowId,
ack_sequence: u64,
},
NodeStopped {
dataflow_id: DataflowId,
node_id: NodeId,
clean_stop: bool,
},
}Variants (Non-exhaustive)§
This enum is marked as non-exhaustive
BuildResult
SpawnResult
AllNodesReady
AllNodesFinished
Heartbeat
Fields
ft_stats: Option<FaultToleranceSnapshot>ZenohListenEndpoint
The zenoh endpoint this daemon actually bound and is reachable at, sent once its session is open.
The coordinator records it and hands it to daemons that register later
(see RegisterResult::Ok::peer_zenoh_endpoints), which is what lets a
multi-machine deployment wire itself without every daemon being told
every other daemon’s address.
Confirms or withdraws the endpoint this daemon advertised in its
registration, once its zenoh session is open and the listener has been
verified against info().locators().
Some(endpoint) confirms (and would correct a differing one);
None withdraws, which is what a daemon whose listener did not bind
must do so the coordinator stops handing out a dead endpoint.
The registration carries the endpoint in the first place — see
DaemonRegisterRequest::zenoh_listen_endpoint for why it cannot wait
until here. This is the correction, not the announcement.
StatusReport
Sent by the daemon after registration to report its current state. Enables coordinator-daemon reconciliation on reconnect.
Fields
running_dataflows: Vec<DataflowStatusEntry>Log(LogMessage)
Exit
NodeMetrics
Fields
dataflow_id: DataflowIdmetrics: BTreeMap<NodeId, NodeMetrics>network: Option<NetworkMetrics>TopicDebugData
Topic debug payload destined for one or more active CLI subscriptions.
Daemon and coordinator are co-deployed from the same build, so this multi-subscriber shape is safe to evolve within the repository.
StateCatchUpAck
Daemon acknowledges state catch-up through a given sequence number.
NodeStopped
Sent by the daemon when a node has exited and the daemon will NOT
restart it (e.g. dora node stop, a node exiting under
restart_policy: Never, or a final-failure cascade). The
coordinator uses this to invalidate its cached node_metrics
entry so dora node list reflects the actual state instead of
the last-reported “Running” snapshot. Without this signal the
daemon’s metrics-snapshot loop simply stops including the dead
node and the coordinator’s cache is frozen at the last
pre-exit values forever.
Fields
dataflow_id: DataflowIdclean_stop: booltrue if the daemon called disable_restart() before the
exit (i.e. the stop_single_node / restart_single_node
path triggered by dora node stop/restart). false for
a final-failure exit under restart_policy: Never or a
max_restarts exhaustion. The coordinator uses this to
pick NodeStatus::Stopped vs NodeStatus::Failed, so a
crash is not silently reported as a clean teardown (which
would hide it from dora doctor).