pub struct StateFile {
pub daemons: BTreeMap<DaemonId, Daemon>,
pub disabled: BTreeSet<DaemonId>,
pub shell_dirs: BTreeMap<String, PathBuf>,
pub project_sessions: BTreeMap<String, BTreeMap<PathBuf, ProjectSession>>,
/* private fields */
}Fields§
§daemons: BTreeMap<DaemonId, Daemon>§disabled: BTreeSet<DaemonId>§shell_dirs: BTreeMap<String, PathBuf>§project_sessions: BTreeMap<String, BTreeMap<PathBuf, ProjectSession>>Project sessions keyed by host PID (as string, matching shell_dirs)
and then by canonical directory. #[serde(default)] keeps older
state files (that predate project sessions) parseable.
Implementations§
Source§impl StateFile
impl StateFile
pub fn new(path: PathBuf) -> Self
pub fn get() -> &'static Self
pub fn read<P: AsRef<Path>>(path: P) -> Result<Self>
Sourcepub fn insert_daemon(&mut self, id: &DaemonId, daemon: Daemon)
pub fn insert_daemon(&mut self, id: &DaemonId, daemon: Daemon)
Insert or replace a daemon entry and mark the state dirty.
Sourcepub fn set_status(&mut self, id: &DaemonId, status: DaemonStatus) -> bool
pub fn set_status(&mut self, id: &DaemonId, status: DaemonStatus) -> bool
Set a daemon’s status, marking the state dirty. Returns whether the daemon exists.
Sourcepub fn clear_proxy_idle_timeout(&mut self, id: &DaemonId) -> bool
pub fn clear_proxy_idle_timeout(&mut self, id: &DaemonId) -> bool
Clear a daemon’s idle-shutdown ownership, marking the state dirty if it had any. Returns true if it did.
Sourcepub fn remove_daemon(&mut self, id: &DaemonId)
pub fn remove_daemon(&mut self, id: &DaemonId)
Remove a daemon entry and mark the state dirty if the daemon existed.
Sourcepub fn disable_daemon(&mut self, id: &DaemonId) -> bool
pub fn disable_daemon(&mut self, id: &DaemonId) -> bool
Disable a daemon (add to disabled set) and mark the state dirty. Returns true if the daemon was not already disabled.
Sourcepub fn enable_daemon(&mut self, id: &DaemonId) -> bool
pub fn enable_daemon(&mut self, id: &DaemonId) -> bool
Enable a daemon (remove from disabled set) and mark the state dirty. Returns true if the daemon was previously disabled.
Sourcepub fn set_active_port(&mut self, id: &DaemonId, port: u16) -> bool
pub fn set_active_port(&mut self, id: &DaemonId, port: u16) -> bool
Set the active port for a daemon and mark the state dirty. Returns true if the daemon was found and updated.
Sourcepub fn clear_active_port(&mut self, id: &DaemonId) -> bool
pub fn clear_active_port(&mut self, id: &DaemonId) -> bool
Clear the active port for a daemon and mark the state dirty. Returns true if the daemon was found and updated.
Sourcepub fn set_last_cron_triggered(
&mut self,
id: &DaemonId,
time: DateTime<Local>,
) -> bool
pub fn set_last_cron_triggered( &mut self, id: &DaemonId, time: DateTime<Local>, ) -> bool
Update the last cron trigger time for a daemon and mark the state dirty. Returns true if the daemon was found and updated.
Sourcepub fn set_last_cron_run(
&mut self,
id: &DaemonId,
time: DateTime<Local>,
) -> bool
pub fn set_last_cron_run( &mut self, id: &DaemonId, time: DateTime<Local>, ) -> bool
Record that the cron watcher actually started a daemon, and mark the state dirty. Returns true if the daemon was found and updated.
Separate from set_last_cron_triggered because a tick and a run are
not the same event: see Daemon::last_cron_run.
Sourcepub fn set_shell_dir(&mut self, shell_pid: u32, dir: PathBuf)
pub fn set_shell_dir(&mut self, shell_pid: u32, dir: PathBuf)
Set a shell working directory and mark the state dirty.
Sourcepub fn remove_shell_dir(&mut self, shell_pid: u32) -> bool
pub fn remove_shell_dir(&mut self, shell_pid: u32) -> bool
Remove a shell working directory and mark the state dirty. Returns true if the entry existed.
Sourcepub fn set_project_session(
&mut self,
pid: u32,
dir: PathBuf,
session: ProjectSession,
) -> Option<ProjectSession>
pub fn set_project_session( &mut self, pid: u32, dir: PathBuf, session: ProjectSession, ) -> Option<ProjectSession>
Insert or replace a project session for the given host PID and directory and mark the state dirty. Returns the previous session, if any.
Sourcepub fn remove_project_session(
&mut self,
pid: u32,
dir: &Path,
) -> Option<ProjectSession>
pub fn remove_project_session( &mut self, pid: u32, dir: &Path, ) -> Option<ProjectSession>
Remove a project session for the given host PID and directory and mark the state dirty if it existed. Returns the removed session, if any. Empty per-PID subtables are pruned so the persisted TOML stays tidy.
Sourcepub fn get_project_session(
&self,
pid: u32,
dir: &Path,
) -> Option<&ProjectSession>
pub fn get_project_session( &self, pid: u32, dir: &Path, ) -> Option<&ProjectSession>
Look up a project session for the given host PID and directory.
Sourcepub fn active_directories(&self) -> Vec<PathBuf>
pub fn active_directories(&self) -> Vec<PathBuf>
Flat iterator over all project sessions yielding (pid_str, dir, session)
for every entry. Used by the supervisor refresh loop to evaluate liveness.
Every directory a tracked shell or project session is in.
pub fn iter_project_sessions(&self) -> Vec<(&str, &PathBuf, &ProjectSession)>
Sourcepub fn retain_daemons<F>(&mut self, f: F)
pub fn retain_daemons<F>(&mut self, f: F)
Retain only daemons matching the predicate and mark the state dirty if any were removed.
Trait Implementations§
Source§impl<'de> Deserialize<'de> for StateFile
impl<'de> Deserialize<'de> for StateFile
Source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
Auto Trait Implementations§
impl !Freeze for StateFile
impl RefUnwindSafe for StateFile
impl Send for StateFile
impl Sync for StateFile
impl Unpin for StateFile
impl UnsafeUnpin for StateFile
impl UnwindSafe for StateFile
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
impl<T> DeserializeOwned for Twhere
T: for<'de> Deserialize<'de>,
impl<T> ErasedDestructor for Twhere
T: 'static,
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<D> OwoColorize for D
impl<D> OwoColorize for D
Source§fn fg<C>(&self) -> FgColorDisplay<'_, C, Self>where
C: Color,
fn fg<C>(&self) -> FgColorDisplay<'_, C, Self>where
C: Color,
Source§fn bg<C>(&self) -> BgColorDisplay<'_, C, Self>where
C: Color,
fn bg<C>(&self) -> BgColorDisplay<'_, C, Self>where
C: Color,
Source§fn black(&self) -> FgColorDisplay<'_, Black, Self>
fn black(&self) -> FgColorDisplay<'_, Black, Self>
Source§fn on_black(&self) -> BgColorDisplay<'_, Black, Self>
fn on_black(&self) -> BgColorDisplay<'_, Black, Self>
Source§fn red(&self) -> FgColorDisplay<'_, Red, Self>
fn red(&self) -> FgColorDisplay<'_, Red, Self>
Source§fn on_red(&self) -> BgColorDisplay<'_, Red, Self>
fn on_red(&self) -> BgColorDisplay<'_, Red, Self>
Source§fn green(&self) -> FgColorDisplay<'_, Green, Self>
fn green(&self) -> FgColorDisplay<'_, Green, Self>
Source§fn on_green(&self) -> BgColorDisplay<'_, Green, Self>
fn on_green(&self) -> BgColorDisplay<'_, Green, Self>
Source§fn yellow(&self) -> FgColorDisplay<'_, Yellow, Self>
fn yellow(&self) -> FgColorDisplay<'_, Yellow, Self>
Source§fn on_yellow(&self) -> BgColorDisplay<'_, Yellow, Self>
fn on_yellow(&self) -> BgColorDisplay<'_, Yellow, Self>
Source§fn blue(&self) -> FgColorDisplay<'_, Blue, Self>
fn blue(&self) -> FgColorDisplay<'_, Blue, Self>
Source§fn on_blue(&self) -> BgColorDisplay<'_, Blue, Self>
fn on_blue(&self) -> BgColorDisplay<'_, Blue, Self>
Source§fn magenta(&self) -> FgColorDisplay<'_, Magenta, Self>
fn magenta(&self) -> FgColorDisplay<'_, Magenta, Self>
Source§fn on_magenta(&self) -> BgColorDisplay<'_, Magenta, Self>
fn on_magenta(&self) -> BgColorDisplay<'_, Magenta, Self>
Source§fn purple(&self) -> FgColorDisplay<'_, Magenta, Self>
fn purple(&self) -> FgColorDisplay<'_, Magenta, Self>
Source§fn on_purple(&self) -> BgColorDisplay<'_, Magenta, Self>
fn on_purple(&self) -> BgColorDisplay<'_, Magenta, Self>
Source§fn cyan(&self) -> FgColorDisplay<'_, Cyan, Self>
fn cyan(&self) -> FgColorDisplay<'_, Cyan, Self>
Source§fn on_cyan(&self) -> BgColorDisplay<'_, Cyan, Self>
fn on_cyan(&self) -> BgColorDisplay<'_, Cyan, Self>
Source§fn white(&self) -> FgColorDisplay<'_, White, Self>
fn white(&self) -> FgColorDisplay<'_, White, Self>
Source§fn on_white(&self) -> BgColorDisplay<'_, White, Self>
fn on_white(&self) -> BgColorDisplay<'_, White, Self>
Source§fn default_color(&self) -> FgColorDisplay<'_, Default, Self>
fn default_color(&self) -> FgColorDisplay<'_, Default, Self>
Source§fn on_default_color(&self) -> BgColorDisplay<'_, Default, Self>
fn on_default_color(&self) -> BgColorDisplay<'_, Default, Self>
Source§fn bright_black(&self) -> FgColorDisplay<'_, BrightBlack, Self>
fn bright_black(&self) -> FgColorDisplay<'_, BrightBlack, Self>
Source§fn on_bright_black(&self) -> BgColorDisplay<'_, BrightBlack, Self>
fn on_bright_black(&self) -> BgColorDisplay<'_, BrightBlack, Self>
Source§fn bright_red(&self) -> FgColorDisplay<'_, BrightRed, Self>
fn bright_red(&self) -> FgColorDisplay<'_, BrightRed, Self>
Source§fn on_bright_red(&self) -> BgColorDisplay<'_, BrightRed, Self>
fn on_bright_red(&self) -> BgColorDisplay<'_, BrightRed, Self>
Source§fn bright_green(&self) -> FgColorDisplay<'_, BrightGreen, Self>
fn bright_green(&self) -> FgColorDisplay<'_, BrightGreen, Self>
Source§fn on_bright_green(&self) -> BgColorDisplay<'_, BrightGreen, Self>
fn on_bright_green(&self) -> BgColorDisplay<'_, BrightGreen, Self>
Source§fn bright_yellow(&self) -> FgColorDisplay<'_, BrightYellow, Self>
fn bright_yellow(&self) -> FgColorDisplay<'_, BrightYellow, Self>
Source§fn on_bright_yellow(&self) -> BgColorDisplay<'_, BrightYellow, Self>
fn on_bright_yellow(&self) -> BgColorDisplay<'_, BrightYellow, Self>
Source§fn bright_blue(&self) -> FgColorDisplay<'_, BrightBlue, Self>
fn bright_blue(&self) -> FgColorDisplay<'_, BrightBlue, Self>
Source§fn on_bright_blue(&self) -> BgColorDisplay<'_, BrightBlue, Self>
fn on_bright_blue(&self) -> BgColorDisplay<'_, BrightBlue, Self>
Source§fn bright_magenta(&self) -> FgColorDisplay<'_, BrightMagenta, Self>
fn bright_magenta(&self) -> FgColorDisplay<'_, BrightMagenta, Self>
Source§fn on_bright_magenta(&self) -> BgColorDisplay<'_, BrightMagenta, Self>
fn on_bright_magenta(&self) -> BgColorDisplay<'_, BrightMagenta, Self>
Source§fn bright_purple(&self) -> FgColorDisplay<'_, BrightMagenta, Self>
fn bright_purple(&self) -> FgColorDisplay<'_, BrightMagenta, Self>
Source§fn on_bright_purple(&self) -> BgColorDisplay<'_, BrightMagenta, Self>
fn on_bright_purple(&self) -> BgColorDisplay<'_, BrightMagenta, Self>
Source§fn bright_cyan(&self) -> FgColorDisplay<'_, BrightCyan, Self>
fn bright_cyan(&self) -> FgColorDisplay<'_, BrightCyan, Self>
Source§fn on_bright_cyan(&self) -> BgColorDisplay<'_, BrightCyan, Self>
fn on_bright_cyan(&self) -> BgColorDisplay<'_, BrightCyan, Self>
Source§fn bright_white(&self) -> FgColorDisplay<'_, BrightWhite, Self>
fn bright_white(&self) -> FgColorDisplay<'_, BrightWhite, Self>
Source§fn on_bright_white(&self) -> BgColorDisplay<'_, BrightWhite, Self>
fn on_bright_white(&self) -> BgColorDisplay<'_, BrightWhite, Self>
Source§fn bold(&self) -> BoldDisplay<'_, Self>
fn bold(&self) -> BoldDisplay<'_, Self>
Source§fn dimmed(&self) -> DimDisplay<'_, Self>
fn dimmed(&self) -> DimDisplay<'_, Self>
Source§fn italic(&self) -> ItalicDisplay<'_, Self>
fn italic(&self) -> ItalicDisplay<'_, Self>
Source§fn underline(&self) -> UnderlineDisplay<'_, Self>
fn underline(&self) -> UnderlineDisplay<'_, Self>
Source§fn blink(&self) -> BlinkDisplay<'_, Self>
fn blink(&self) -> BlinkDisplay<'_, Self>
Source§fn blink_fast(&self) -> BlinkFastDisplay<'_, Self>
fn blink_fast(&self) -> BlinkFastDisplay<'_, Self>
Source§fn reversed(&self) -> ReversedDisplay<'_, Self>
fn reversed(&self) -> ReversedDisplay<'_, Self>
Source§fn strikethrough(&self) -> StrikeThroughDisplay<'_, Self>
fn strikethrough(&self) -> StrikeThroughDisplay<'_, Self>
Source§fn color<Color>(&self, color: Color) -> FgDynColorDisplay<'_, Color, Self>where
Color: DynColor,
fn color<Color>(&self, color: Color) -> FgDynColorDisplay<'_, Color, Self>where
Color: DynColor,
OwoColorize::fg or
a color-specific method, such as OwoColorize::green, Read moreSource§fn on_color<Color>(&self, color: Color) -> BgDynColorDisplay<'_, Color, Self>where
Color: DynColor,
fn on_color<Color>(&self, color: Color) -> BgDynColorDisplay<'_, Color, Self>where
Color: DynColor,
OwoColorize::bg or
a color-specific method, such as OwoColorize::on_yellow, Read more