pub struct AgentRegistry { /* private fields */ }Expand description
Per-workspace agent registry plus advisory per-file lock table.
Implementations§
Source§impl AgentRegistry
impl AgentRegistry
Sourcepub fn with_config(config: RegistryConfig) -> Self
pub fn with_config(config: RegistryConfig) -> Self
Construct an empty registry with explicit thresholds.
Sourcepub fn config(&self) -> RegistryConfig
pub fn config(&self) -> RegistryConfig
Borrow the active config (lock TTL + timeout).
Sourcepub fn register(&mut self, name: impl Into<String>, now_ms: i64) -> AgentId
pub fn register(&mut self, name: impl Into<String>, now_ms: i64) -> AgentId
Register a new agent under an auto-assigned id. The display name is
stored verbatim so embedders can surface it in status.
Sourcepub fn register_with_id(
&mut self,
id: AgentId,
name: impl Into<String>,
now_ms: i64,
) -> AgentId
pub fn register_with_id( &mut self, id: AgentId, name: impl Into<String>, now_ms: i64, ) -> AgentId
Register or refresh an agent under an explicit id. Used by callers (and the version log) that need to thread an externally-assigned id through the registry. Returns the same id back.
Sourcepub fn heartbeat(&mut self, id: AgentId, now_ms: i64)
pub fn heartbeat(&mut self, id: AgentId, now_ms: i64)
Refresh an agent’s last_seen_ms. If the agent isn’t registered we
transparently register it with a placeholder name (agent-<id>).
Sourcepub fn unregister(&mut self, id: AgentId)
pub fn unregister(&mut self, id: AgentId)
Drop an agent record. No-op if the id isn’t registered.
Sourcepub fn agents(&self) -> impl Iterator<Item = &AgentInfo>
pub fn agents(&self) -> impl Iterator<Item = &AgentInfo>
Iterate over the live agent records — useful for status payloads.
Sourcepub fn note_edit(&mut self, id: AgentId, now_ms: i64)
pub fn note_edit(&mut self, id: AgentId, now_ms: i64)
Bump the edit_count for id. Used by version_record so the
status surface can quickly answer “is this agent still busy?”.
Sourcepub fn try_lock(
&mut self,
agent_id: AgentId,
path: &str,
ttl_ms: Option<i64>,
now_ms: i64,
) -> bool
pub fn try_lock( &mut self, agent_id: AgentId, path: &str, ttl_ms: Option<i64>, now_ms: i64, ) -> bool
Try to acquire an exclusive lock on path for agent_id. Reaps
expired records first so a stale holder doesn’t block forever.
Returns true if the lock was granted.
Sourcepub fn release_lock(&mut self, agent_id: AgentId, path: &str)
pub fn release_lock(&mut self, agent_id: AgentId, path: &str)
Release a lock previously held by agent_id on path. No-op when
the agent or the lock are gone.
Sourcepub fn lock_holder(&mut self, path: &str, now_ms: i64) -> Option<AgentId>
pub fn lock_holder(&mut self, path: &str, now_ms: i64) -> Option<AgentId>
Return the id of the agent currently holding path, or None.
Expired holders are reaped lazily so the answer reflects state
without requiring a separate pass.
Sourcepub fn reap(&mut self, now_ms: i64)
pub fn reap(&mut self, now_ms: i64)
Walk every agent and downgrade ones whose last_seen_ms is older
than agent_timeout_ms. Crashed agents drop their locks as a
side effect. Idempotent — embedders call this at startup to recover
state inherited from a previous run.
Sourcepub fn from_snapshot(config: RegistryConfig, snap: SerializedRegistry) -> Self
pub fn from_snapshot(config: RegistryConfig, snap: SerializedRegistry) -> Self
Restore a registry from a previously persisted snapshot.
Trait Implementations§
Source§impl Clone for AgentRegistry
impl Clone for AgentRegistry
Source§fn clone(&self) -> AgentRegistry
fn clone(&self) -> AgentRegistry
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for AgentRegistry
impl Debug for AgentRegistry
Source§impl Default for AgentRegistry
impl Default for AgentRegistry
Source§fn default() -> AgentRegistry
fn default() -> AgentRegistry
Auto Trait Implementations§
impl Freeze for AgentRegistry
impl RefUnwindSafe for AgentRegistry
impl Send for AgentRegistry
impl Sync for AgentRegistry
impl Unpin for AgentRegistry
impl UnsafeUnpin for AgentRegistry
impl UnwindSafe for AgentRegistry
Blanket Implementations§
Source§impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere
T: 'a,
impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere
T: 'a,
Source§impl<'a, T, E> AsTaggedImplicit<'a, E> for Twhere
T: 'a,
impl<'a, T, E> AsTaggedImplicit<'a, E> for Twhere
T: 'a,
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
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 moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
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 moreSource§impl<T> Paint for Twhere
T: ?Sized,
impl<T> Paint for Twhere
T: ?Sized,
Source§fn fg(&self, value: Color) -> Painted<&T>
fn fg(&self, value: Color) -> Painted<&T>
Returns a styled value derived from self with the foreground set to
value.
This method should be used rarely. Instead, prefer to use color-specific
builder methods like red() and
green(), which have the same functionality but are
pithier.
§Example
Set foreground color to white using fg():
use yansi::{Paint, Color};
painted.fg(Color::White);Set foreground color to white using white().
use yansi::Paint;
painted.white();Source§fn bright_black(&self) -> Painted<&T>
fn bright_black(&self) -> Painted<&T>
Source§fn bright_red(&self) -> Painted<&T>
fn bright_red(&self) -> Painted<&T>
Source§fn bright_green(&self) -> Painted<&T>
fn bright_green(&self) -> Painted<&T>
Source§fn bright_yellow(&self) -> Painted<&T>
fn bright_yellow(&self) -> Painted<&T>
Source§fn bright_blue(&self) -> Painted<&T>
fn bright_blue(&self) -> Painted<&T>
Source§fn bright_magenta(&self) -> Painted<&T>
fn bright_magenta(&self) -> Painted<&T>
Source§fn bright_cyan(&self) -> Painted<&T>
fn bright_cyan(&self) -> Painted<&T>
Source§fn bright_white(&self) -> Painted<&T>
fn bright_white(&self) -> Painted<&T>
Source§fn bg(&self, value: Color) -> Painted<&T>
fn bg(&self, value: Color) -> Painted<&T>
Returns a styled value derived from self with the background set to
value.
This method should be used rarely. Instead, prefer to use color-specific
builder methods like on_red() and
on_green(), which have the same functionality but
are pithier.
§Example
Set background color to red using fg():
use yansi::{Paint, Color};
painted.bg(Color::Red);Set background color to red using on_red().
use yansi::Paint;
painted.on_red();Source§fn on_primary(&self) -> Painted<&T>
fn on_primary(&self) -> Painted<&T>
Source§fn on_magenta(&self) -> Painted<&T>
fn on_magenta(&self) -> Painted<&T>
Source§fn on_bright_black(&self) -> Painted<&T>
fn on_bright_black(&self) -> Painted<&T>
Source§fn on_bright_red(&self) -> Painted<&T>
fn on_bright_red(&self) -> Painted<&T>
Source§fn on_bright_green(&self) -> Painted<&T>
fn on_bright_green(&self) -> Painted<&T>
Source§fn on_bright_yellow(&self) -> Painted<&T>
fn on_bright_yellow(&self) -> Painted<&T>
Source§fn on_bright_blue(&self) -> Painted<&T>
fn on_bright_blue(&self) -> Painted<&T>
Source§fn on_bright_magenta(&self) -> Painted<&T>
fn on_bright_magenta(&self) -> Painted<&T>
Source§fn on_bright_cyan(&self) -> Painted<&T>
fn on_bright_cyan(&self) -> Painted<&T>
Source§fn on_bright_white(&self) -> Painted<&T>
fn on_bright_white(&self) -> Painted<&T>
Source§fn attr(&self, value: Attribute) -> Painted<&T>
fn attr(&self, value: Attribute) -> Painted<&T>
Enables the styling Attribute value.
This method should be used rarely. Instead, prefer to use
attribute-specific builder methods like bold() and
underline(), which have the same functionality
but are pithier.
§Example
Make text bold using attr():
use yansi::{Paint, Attribute};
painted.attr(Attribute::Bold);Make text bold using using bold().
use yansi::Paint;
painted.bold();Source§fn rapid_blink(&self) -> Painted<&T>
fn rapid_blink(&self) -> Painted<&T>
Source§fn quirk(&self, value: Quirk) -> Painted<&T>
fn quirk(&self, value: Quirk) -> Painted<&T>
Enables the yansi Quirk value.
This method should be used rarely. Instead, prefer to use quirk-specific
builder methods like mask() and
wrap(), which have the same functionality but are
pithier.
§Example
Enable wrapping using .quirk():
use yansi::{Paint, Quirk};
painted.quirk(Quirk::Wrap);Enable wrapping using wrap().
use yansi::Paint;
painted.wrap();Source§fn clear(&self) -> Painted<&T>
👎Deprecated since 1.0.1: renamed to resetting() due to conflicts with Vec::clear().
The clear() method will be removed in a future release.
fn clear(&self) -> Painted<&T>
renamed to resetting() due to conflicts with Vec::clear().
The clear() method will be removed in a future release.
Source§fn whenever(&self, value: Condition) -> Painted<&T>
fn whenever(&self, value: Condition) -> Painted<&T>
Conditionally enable styling based on whether the Condition value
applies. Replaces any previous condition.
See the crate level docs for more details.
§Example
Enable styling painted only when both stdout and stderr are TTYs:
use yansi::{Paint, Condition};
painted.red().on_yellow().whenever(Condition::STDOUTERR_ARE_TTY);