pub struct HotReloadConfig { /* private fields */ }Expand description
Hot-reloadable configuration container.
Construct with HotReloadConfig::from_file, then either drive
reloads manually with HotReloadConfig::reload or hand off to a
background watcher with HotReloadConfig::start_watching.
Configurable knobs (all consuming-builder style, intended for fluent construction):
HotReloadConfig::with_change_notifications— receiveConfigChangeEvents on anmpscchannel.HotReloadConfig::with_debounce— adjust the debounce window (default 100 ms).HotReloadConfig::with_poll_interval— set the polling interval. Used directly when thehot-reloadfeature is off; used as the watchdog interval when the feature is on.HotReloadConfig::with_polling_fallback— opt into a parallel polling thread in addition to the event-driven watcher, for environments where the kernel watcher is known unreliable.
Implementations§
Source§impl HotReloadConfig
impl HotReloadConfig
Sourcepub fn from_file<P: AsRef<Path>>(path: P) -> Result<Self>
pub fn from_file<P: AsRef<Path>>(path: P) -> Result<Self>
Create a new hot-reloadable configuration from a file.
§Errors
Returns an error if the file cannot be read, parsed, or stat’d for its modification time.
Sourcepub fn with_poll_interval(self, interval: Duration) -> Self
pub fn with_poll_interval(self, interval: Duration) -> Self
Set the polling interval for file change detection.
When the hot-reload feature is enabled (the default in v0.9.6+),
the primary watcher is event-driven and this interval is only
consulted as the watchdog cadence if with_polling_fallback
has been called.
When the hot-reload feature is disabled, this is the actual
polling cadence of the background thread.
Sourcepub fn with_debounce(self, debounce: Duration) -> Self
pub fn with_debounce(self, debounce: Duration) -> Self
Override the debounce window applied to clustered file-change events.
Editors that save via “write-to-tmp + atomic-rename” generate multiple kernel events for a single user save. The debounce collapses any burst within this window to a single reload. Default: 100 ms.
Sourcepub fn with_polling_fallback(self) -> Self
pub fn with_polling_fallback(self) -> Self
Opt into running a polling watchdog in addition to the event-driven watcher.
Network filesystems (SMB, NFS), some container overlay
filesystems, and a handful of edge-case kernel configurations
drop or delay events that notify would normally surface.
Enabling the polling fallback re-derives changes from periodic
stat(2) calls on the watched path, at the
HotReloadConfig::with_poll_interval cadence.
Has no effect (and costs nothing) when the hot-reload Cargo
feature is disabled — the watcher is already polling in that
configuration.
Sourcepub fn with_change_notifications(self) -> (Self, Receiver<ConfigChangeEvent>)
pub fn with_change_notifications(self) -> (Self, Receiver<ConfigChangeEvent>)
Enable change notifications.
Returns the configured HotReloadConfig together with a
Receiver that will deliver ConfigChangeEvents as the
watcher observes them.
Sourcepub fn config(&self) -> Arc<RwLock<Config>>
pub fn config(&self) -> Arc<RwLock<Config>>
Get a thread-safe reference to the current configuration.
Sourcepub fn snapshot(&self) -> Result<Config>
pub fn snapshot(&self) -> Result<Config>
Get a freshly-reparsed snapshot of the configuration file as it exists on disk right now.
This is distinct from reading the current Arc<RwLock<Config>>
— it bypasses the watcher and re-reads the file. Useful for
“what would I see if I reloaded now” inspection.
§Errors
Returns an error if the file cannot be read or parsed.
Sourcepub fn reload(&mut self) -> Result<bool>
pub fn reload(&mut self) -> Result<bool>
Manually trigger a reload check.
Re-stats the file, compares mtime against the last-known
modification time, and re-parses if newer. Sends a
ConfigChangeEvent::Reloaded or
ConfigChangeEvent::ReloadFailed notification if change
notifications are enabled.
Returns Ok(true) if a reload was performed, Ok(false) if
the file was unchanged since the last check.
§Errors
Returns an error if the file cannot be stat’d, read, or parsed.
Sourcepub fn start_watching(self) -> HotReloadHandle
pub fn start_watching(self) -> HotReloadHandle
Start automatic hot reloading in a background thread.
With the hot-reload Cargo feature enabled (the default in
v0.9.6+), the background worker registers a
notify::RecommendedWatcher on the file’s parent directory
and reacts to kernel events. Otherwise it falls back to a
poll_interval-cadence polling thread (the v0.9.5 behavior).
Sourcepub fn last_modified(&self) -> SystemTime
pub fn last_modified(&self) -> SystemTime
Get the last modification time.