Skip to main content

liminal_server/agents/
topology_signal.rs

1//! Agent metadata advances the existing console publisher by a signal.
2
3use super::{ConsoleError, ConsoleHub};
4
5impl ConsoleHub {
6    /// Makes a real metadata change due without inventing a worker or a flow.
7    ///
8    /// # Errors
9    /// The topology lock or revision counter is unavailable.
10    pub fn agent_changed(&self) -> Result<(), ConsoleError> {
11        let mut state = self.lock_topology()?;
12        let next = state
13            .model
14            .rev()
15            .checked_add(1)
16            .ok_or(ConsoleError::TopologyRevisionOverflow)?;
17        state.model.ensure_revision(next);
18        state.stale = true;
19        let due = state.subscribers > 0;
20        drop(state);
21        if due {
22            self.wake();
23        }
24        Ok(())
25    }
26}