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
impl SavedNetworksManager
sourcepub async fn new(telemetry_sender: TelemetrySender) -> Self
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.
sourcepub async fn new_with_stash(
stash: Option<Stash>,
telemetry_sender: TelemetrySender
) -> Self
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
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,
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,
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,
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,
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,
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,
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,
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.
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,
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.
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,
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§
impl !Freeze for SavedNetworksManager
impl !RefUnwindSafe for SavedNetworksManager
impl Send for SavedNetworksManager
impl Sync for SavedNetworksManager
impl Unpin for SavedNetworksManager
impl !UnwindSafe for SavedNetworksManager
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
Mutably borrows from an owned value. Read more