Skip to main content

AppState

Struct AppState 

Source
pub struct AppState {
    pub store: Mutex<Store>,
    pub config: RwLock<Config>,
    pub config_path: PathBuf,
    pub readings_tx: Sender<ReadingEvent>,
    pub collector: CollectorState,
}
Expand description

Shared application state.

Fields§

§store: Mutex<Store>

The data store (wrapped in Mutex for thread-safe access).

§config: RwLock<Config>

Configuration (RwLock for runtime updates).

§config_path: PathBuf

Path to the configuration file (for saving changes).

§readings_tx: Sender<ReadingEvent>

Broadcast channel for real-time reading updates.

§collector: CollectorState

Collector control state.

Implementations§

Source§

impl AppState

Source

pub fn new(store: Store, config: Config) -> Arc<Self>

Create new application state.

The broadcast channel buffer size is determined by config.server.broadcast_buffer. If the buffer fills (slow subscribers), old messages are dropped without blocking.

Source

pub fn with_config_path( store: Store, config: Config, config_path: PathBuf, ) -> Arc<Self>

Create new application state with a custom config path.

Source

pub async fn save_config(&self) -> Result<(), ConfigError>

Save the current configuration to disk.

This should be called after any configuration changes made via the API.

Source

pub async fn save_config_or_log(&self)

Save the configuration to disk, logging any errors.

This is a convenience method for fire-and-forget saves.

Source

pub async fn on_devices_changed(&self)

Signal that the device configuration has changed.

This saves the config to disk and signals the collector to reload if it is currently running.

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

Source§

fn vzip(self) -> V

Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

impl<A, B, T> HttpServerConnExec<A, B> for T
where B: Body,