pub struct ConfigState {
config: RwLock<Arc<FullConfigType>>,
}Expand description
Thread-safe in-memory holder for the live configuration.
This does not watch anything. It was called ConfigWatcher until
2026-09-06, on the strength of a comment promising that “the actual file
system watching will be integrated with the event loop in a later phase” —
which never happened. Watching was instead built separately in
backend::config_watcher_fs, on top of the shared fs_watch::pool, and the
two have coexisted since: similar names, one module doing the thing the
other is named for. That cost real time while tracing the settings-reload
path; see
docs/reports/REPORT_NETWORK_ARCHITECTURE_DRYNESS_AND_ROBUST_LAN_2026_09_06.md §7.
Readers get a cheap Arc clone of the current snapshot; writers swap the
whole Arc under the lock, so no reader ever observes a half-applied
config.
Fields§
§config: RwLock<Arc<FullConfigType>>Implementations§
Source§impl ConfigState
impl ConfigState
Sourcepub fn with_config(config: FullConfigType) -> Self
pub fn with_config(config: FullConfigType) -> Self
Create a new config watcher with initial config.
Sourcepub fn get_full_config(&self) -> Arc<FullConfigType> ⓘ
pub fn get_full_config(&self) -> Arc<FullConfigType> ⓘ
Get a snapshot of the current config.
Sourcepub fn get_settings(&self) -> SettingsType
pub fn get_settings(&self) -> SettingsType
Get just the settings.
Sourcepub fn update_settings(&self, settings: SettingsType)
pub fn update_settings(&self, settings: SettingsType)
Update just the settings portion, and the per-connection settings that
live inside it (settings.json → connections): every
per-connection reader looks at FullConfigType::connections.
Sourcepub fn update_widgets(&self, widgets: HashMap<String, WidgetConfigType>)
pub fn update_widgets(&self, widgets: HashMap<String, WidgetConfigType>)
Replace the widget set (the built-ins merged with the user’s own
widgets.json — backend::user_widgets).
Sourcepub fn update_browser_start_page(&self, url: Option<String>)
pub fn update_browser_start_page(&self, url: Option<String>)
Update just the browser start page. Mirrors update_settings exactly
— see backend::browser_start_page for the load/watch wiring that
calls this.
Trait Implementations§
Auto Trait Implementations§
impl !Freeze for ConfigState
impl RefUnwindSafe for ConfigState
impl Send for ConfigState
impl Sync for ConfigState
impl Unpin for ConfigState
impl UnsafeUnpin for ConfigState
impl UnwindSafe for ConfigState
Blanket Implementations§
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> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
§fn into_any(self: Box<T>) -> Box<dyn Any>
fn into_any(self: Box<T>) -> Box<dyn Any>
Box<dyn Trait> (where Trait: Downcast) to Box<dyn Any>. Box<dyn Any> can
then be further downcast into Box<ConcreteType> where ConcreteType implements Trait.§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Rc<Trait> (where Trait: Downcast) to Rc<Any>. Rc<Any> can then be
further downcast into Rc<ConcreteType> where ConcreteType implements Trait.§fn as_any(&self) -> &(dyn Any + 'static)
fn as_any(&self) -> &(dyn Any + 'static)
&Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &Any’s vtable from &Trait’s.§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
&mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &mut Any’s vtable from &mut Trait’s.§impl<T> DowncastSync for T
impl<T> DowncastSync for T
impl<A, B, T> HttpServerConnExec<A, B> for Twhere
B: Body,
§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
fn instrument(self, span: Span) -> 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 more