pub struct SavedNetworksManager { /* private fields */ }
Expand description

The Saved Network Manager keeps track of saved networks and provides thread-safe access to saved networks. Networks are saved by NetworkConfig and accessed by their NetworkIdentifier (SSID and security protocol). Network configs are saved in-memory, and part of each network data is saved persistently. Futures aware locks are used in order to wait for the stash flush operations to complete when data changes.

Implementations§

source§

impl SavedNetworksManager

source

pub async fn new(telemetry_sender: TelemetrySender) -> Self

Initializes a new Saved Network Manager by reading saved networks from a secure storage (stash). It initializes in-memory storage and persistent storage with stash.

source

pub async fn new_with_stash( stash: Option<Stash>, telemetry_sender: TelemetrySender ) -> Self

Load from persistent data from stash.

Trait Implementations§

source§

impl SavedNetworksManagerApi for SavedNetworksManager

source§

fn known_network_count<'life0, 'async_trait>( &'life0 self ) -> Pin<Box<dyn Future<Output = usize> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait,

Get the count of networks in store, including multiple values with same SSID

source§

fn remove<'life0, 'async_trait>( &'life0 self, network_id: NetworkIdentifier, credential: Credential ) -> Pin<Box<dyn Future<Output = Result<bool, NetworkConfigError>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait,

Attempt to remove the NetworkConfig described by the specified NetworkIdentifier and Credential. Return true if a NetworkConfig is remove and false otherwise.
source§

fn lookup<'life0, 'life1, 'async_trait>( &'life0 self, id: &'life1 NetworkIdentifier ) -> Pin<Box<dyn Future<Output = Vec<NetworkConfig>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait,

Return a list of network configs that match the given SSID.
source§

fn lookup_compatible<'life0, 'life1, 'async_trait>( &'life0 self, ssid: &'life1 Ssid, scan_security: SecurityTypeDetailed ) -> Pin<Box<dyn Future<Output = Vec<NetworkConfig>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait,

Return a list of network configs that could be used with the security type seen in a scan. This includes configs that have a lower security type that can be upgraded to match the provided detailed security type.
source§

fn store<'life0, 'async_trait>( &'life0 self, network_id: NetworkIdentifier, credential: Credential ) -> Pin<Box<dyn Future<Output = Result<Option<NetworkConfig>, NetworkConfigError>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait,

Save a network by SSID and password. If the SSID and password have been saved together before, do not modify the saved config. Update the legacy storage to keep it consistent with what it did before the new version. If a network is pushed out because of the newly saved network, this will return the removed config.
source§

fn record_connect_result<'life0, 'life1, 'async_trait>( &'life0 self, id: NetworkIdentifier, credential: &'life1 Credential, bssid: Bssid, connect_result: ConnectResult, scan_type: ScanObservation ) -> Pin<Box<dyn Future<Output = ()> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait,

Update the specified saved network with the result of an attempted connect. If the specified network could have been connected to with a different security type and we do not find the specified config, we will check the other possible security type. For example if a WPA3 network is specified, we will check WPA2 if it isn’t found. If the specified network is not saved, this function does not save it.
source§

fn record_disconnect<'life0, 'life1, 'life2, 'async_trait>( &'life0 self, id: &'life1 NetworkIdentifier, credential: &'life2 Credential, data: PastConnectionData ) -> Pin<Box<dyn Future<Output = ()> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait, 'life2: 'async_trait,

Record the disconnect from a network, to be used for things such as avoiding connections that drop soon after starting.
source§

fn record_periodic_metrics<'life0, 'async_trait>( &'life0 self ) -> Pin<Box<dyn Future<Output = ()> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait,

source§

fn record_scan_result<'life0, 'life1, 'async_trait>( &'life0 self, target_ssids: Vec<Ssid>, results: &'life1 HashMap<NetworkIdentifierDetailed, Vec<Bss>> ) -> Pin<Box<dyn Future<Output = ()> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait,

Update hidden networks probabilities based on scan results. Record either results of a passive scan or a directed active scan.
source§

fn get_networks<'life0, 'async_trait>( &'life0 self ) -> Pin<Box<dyn Future<Output = Vec<NetworkConfig>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait,

source§

fn get_past_connections<'life0, 'life1, 'life2, 'life3, 'async_trait>( &'life0 self, id: &'life1 NetworkIdentifier, credential: &'life2 Credential, bssid: &'life3 Bssid ) -> Pin<Box<dyn Future<Output = PastConnectionList> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait, 'life2: 'async_trait, 'life3: 'async_trait,

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
§

impl<T> Encode<Ambiguous1> for T

§

unsafe fn encode( self, _encoder: &mut Encoder<'_>, _offset: usize, _depth: Depth ) -> Result<(), Error>

Encodes the object into the encoder’s buffers. Any handles stored in the object are swapped for Handle::INVALID. Read more
§

impl<T> Encode<Ambiguous2> for T

§

unsafe fn encode( self, _encoder: &mut Encoder<'_>, _offset: usize, _depth: Depth ) -> Result<(), Error>

Encodes the object into the encoder’s buffers. Any handles stored in the object are swapped for Handle::INVALID. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

§

impl<T> Instrument for T

§

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

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

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.

§

impl<T> IntoAny for T
where T: 'static + Send + Sync,

§

fn into_any(self: Arc<T>) -> Arc<dyn Any + Sync + Send>

Cast the given object into a dyn std::any::Any.
source§

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

source§

const PRESENT: Presence<Self> = _

source§

const ABSENT: Presence<Self> = _

§

impl<T> Pointable for T

§

const ALIGN: usize = _

The alignment of pointer.
§

type Init = T

The type for initializers.
§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
source§

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

§

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>,

§

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.
§

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

§

fn vzip(self) -> V

§

impl<T> WithSubscriber for T

§

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
§

fn with_current_subscriber(self) -> WithDispatch<Self>

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