Skip to main content

DaemonEvent

Enum DaemonEvent 

Source
#[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>, },
#[non_exhaustive]
ZenohListenEndpoint { endpoint: Option<String>, loopback_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
Non-exhaustive enums could have additional variants added in future. Therefore, when matching against variants of non-exhaustive enums, an extra wildcard arm must be added to account for any future variants.
§

BuildResult

Fields

§build_id: BuildId
§result: Result<(), String>
§

SpawnResult

Fields

§dataflow_id: DataflowId
§result: Result<(), String>
§

AllNodesReady

Fields

§dataflow_id: DataflowId
§exited_before_subscribe: Vec<NodeId>
§

AllNodesFinished

Fields

§dataflow_id: DataflowId
§

Heartbeat

§

#[non_exhaustive]
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 in either endpoint or loopback_endpoint confirms (and would correct a differing advertisement). Both fields None withdraw, which is what a daemon whose listener did not bind must send so the coordinator stops handing out a dead endpoint. Construct through DaemonEvent::zenoh_listen_endpoint to select the appropriate field.

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.

Fields

This variant is marked as non-exhaustive
Non-exhaustive enum variants could have additional fields added in future. Therefore, non-exhaustive enum variants cannot be constructed in external crates and cannot be matched against.
§endpoint: Option<String>

Non-loopback listener; None withdraws the previous advertisement on a 1.0.x coordinator, which ignores loopback_endpoint.

§loopback_endpoint: Option<String>

Loopback listener, understood only by coordinators that filter it by host. Both fields None withdraw the advertisement.

§

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: DataflowId
§

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.

Fields

§dataflow_id: DataflowId
§subscription_ids: Vec<Uuid>
§payload: Vec<u8>
§

StateCatchUpAck

Daemon acknowledges state catch-up through a given sequence number.

Fields

§dataflow_id: DataflowId
§ack_sequence: u64
§

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: DataflowId
§node_id: NodeId
§clean_stop: bool

true 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).

Implementations§

Source§

impl DaemonEvent

Source

pub fn zenoh_listen_endpoint(endpoint: Option<String>) -> Self

Confirm or withdraw a listener while keeping loopback addresses out of the field understood by 1.0.x coordinators. Used on every reconnect too.

Trait Implementations§

Source§

impl Debug for DaemonEvent

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl<'de> Deserialize<'de> for DaemonEvent

Source§

fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>
where __D: Deserializer<'de>,

Deserialize this value from the given Serde deserializer. Read more
Source§

impl Serialize for DaemonEvent

Source§

fn serialize<__S>(&self, __serializer: __S) -> Result<__S::Ok, __S::Error>
where __S: Serializer,

Serialize this value into the given Serde serializer. Read more

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Allocation for T
where T: RefUnwindSafe + Send + Sync,

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> AsNode<T> for T

Source§

fn as_node(&self) -> &T

Source§

impl<T> AsNodeMut<T> for T

Source§

fn as_node_mut(&mut self) -> &mut T

Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
where ST: ?Sized, DT: ?Sized,

Source§

impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
where ST: ?Sized, DT: ?Sized,

Source§

impl<T> DeserializeOwned for T
where T: for<'de> Deserialize<'de>,

Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> IntoEither for T

Source§

fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ

Converts self into a Left variant of Either<Self, Self> if into_left is true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
where F: FnOnce(&Self) -> bool,

Converts self into a Left variant of Either<Self, Self> if into_left(&self) returns true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

impl<T> Read<Exclusive, BecauseExclusive> for T
where T: ?Sized,

Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = !

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, !>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

Source§

fn vzip(self) -> V