Implement GuardMgr::install_bridge_desc_provider
This commit is contained in:
parent
5cb9e1987e
commit
faf51702ac
|
@ -208,6 +208,13 @@ struct GuardMgrInner {
|
||||||
/// This has to be an Option so it can be initialized from None: at the
|
/// This has to be an Option so it can be initialized from None: at the
|
||||||
/// time a GuardMgr is created, there is no NetDirProvider for it to use.
|
/// time a GuardMgr is created, there is no NetDirProvider for it to use.
|
||||||
netdir_provider: Option<Weak<dyn NetDirProvider>>,
|
netdir_provider: Option<Weak<dyn NetDirProvider>>,
|
||||||
|
|
||||||
|
/// A netdir provider that we can use for discovering bridge descriptors.
|
||||||
|
///
|
||||||
|
/// This has to be an Option so it can be initialized from None: at the time
|
||||||
|
/// a GuardMgr is created, there is no BridgeDescProvider for it to use.
|
||||||
|
#[cfg(feature = "bridge-client")]
|
||||||
|
bridge_desc_provider: Option<Weak<dyn bridge::BridgeDescProvider>>,
|
||||||
}
|
}
|
||||||
|
|
||||||
/// A selector that tells us which [`GuardSet`] of several is currently in use.
|
/// A selector that tells us which [`GuardSet`] of several is currently in use.
|
||||||
|
@ -305,6 +312,8 @@ impl<R: Runtime> GuardMgr<R> {
|
||||||
send_skew,
|
send_skew,
|
||||||
recv_skew,
|
recv_skew,
|
||||||
netdir_provider: None,
|
netdir_provider: None,
|
||||||
|
#[cfg(feature = "bridge-client")]
|
||||||
|
bridge_desc_provider: None,
|
||||||
}));
|
}));
|
||||||
{
|
{
|
||||||
let weak_inner = Arc::downgrade(&inner);
|
let weak_inner = Arc::downgrade(&inner);
|
||||||
|
@ -352,16 +361,26 @@ impl<R: Runtime> GuardMgr<R> {
|
||||||
Ok(())
|
Ok(())
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Configure a new BridgeDescProvider.
|
/// Configure a new [`bridge::BridgeDescProvider`] for this [`GuardMgr`].
|
||||||
///
|
///
|
||||||
/// TODO pt-client: give this more documentation, like install_netdir_provider has.
|
/// It will be used to learn about changes in the set of available bridge
|
||||||
|
/// descriptors; we'll inform it whenever our desired set of bridge
|
||||||
|
/// descriptors changes.
|
||||||
|
///
|
||||||
|
/// TODO: Same todo as in `install_netdir_provider` about task handles.
|
||||||
#[cfg(feature = "bridge-client")]
|
#[cfg(feature = "bridge-client")]
|
||||||
#[allow(clippy::needless_pass_by_value, clippy::missing_panics_doc)]
|
pub fn install_bridge_desc_provider(
|
||||||
pub fn install_bridge_desc_provider<T>(
|
|
||||||
&self,
|
&self,
|
||||||
_provider: Arc<dyn bridge::BridgeDescProvider>,
|
provider: &Arc<dyn bridge::BridgeDescProvider>,
|
||||||
) -> Result<(), GuardMgrError> {
|
) -> Result<(), GuardMgrError> {
|
||||||
todo!() // TODO pt-client: Implement this and remove the clippy exceptions above.
|
let weak_provider = Arc::downgrade(provider);
|
||||||
|
{
|
||||||
|
let mut inner = self.inner.lock().expect("Poisoned lock");
|
||||||
|
inner.bridge_desc_provider = Some(weak_provider.clone());
|
||||||
|
}
|
||||||
|
// TODO pt-client: launch a keep_bridge_descs_updated task.
|
||||||
|
|
||||||
|
Ok(())
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Flush our current guard state to the state manager, if there
|
/// Flush our current guard state to the state manager, if there
|
||||||
|
|
Loading…
Reference in New Issue