diff options
| author | Markus Pettersson <markus.pettersson@mullvad.net> | 2024-10-17 09:20:44 +0200 |
|---|---|---|
| committer | Markus Pettersson <markus.pettersson@mullvad.net> | 2024-10-18 15:49:31 +0200 |
| commit | 186b736784f8310495317b52898bed24bbbee779 (patch) | |
| tree | ccfcb23b47cf753b333ab5dc18a510f9527e86eb | |
| parent | 1bb52fb9c98bf1a8dba64e6d12aa6df46574839c (diff) | |
| download | mullvadvpn-186b736784f8310495317b52898bed24bbbee779.tar.xz mullvadvpn-186b736784f8310495317b52898bed24bbbee779.zip | |
Add missing docs
| -rw-r--r-- | mullvad-relay-selector/src/relay_selector/relays.rs | 41 |
1 files changed, 25 insertions, 16 deletions
diff --git a/mullvad-relay-selector/src/relay_selector/relays.rs b/mullvad-relay-selector/src/relay_selector/relays.rs index e8a1035c1d..9ebf31f417 100644 --- a/mullvad-relay-selector/src/relay_selector/relays.rs +++ b/mullvad-relay-selector/src/relay_selector/relays.rs @@ -1,29 +1,38 @@ -//! TODO: Document this module +//! This module defines wrapper types around [`Relay`], often to provide certain runtime guarantees +//! or disambiguate the type of relay which is used in the relay selector's internal APIs. use mullvad_types::relay_list::{Relay, RelayEndpointData}; -// TODO: Import `Either` and convert `Multihop` and `Singlehop` into concrete types. -/// This struct defines the different Wireguard relays the the relay selector can end up selecting -/// for an arbitrary Wireguard [`query`]. -/// -/// - [`WireguardConfig::Singlehop`]; A normal wireguard relay where VPN traffic enters and exits -/// through this sole relay. -/// - [`WireguardConfig::Multihop`]; Two wireguard relays to be used in a multihop circuit. VPN -/// traffic will enter through `entry` and eventually come out from `exit` before the traffic will -/// actually be routed to the broader internet. +/// - [`WireguardConfig::Singlehop`]: A wireguard relay where VPN traffic enters and exits. +/// - [`WireguardConfig::Multihop`]: Two wireguard relays to be used in a multihop circuit. VPN +/// traffic will enter through `entry` and eventually exit through `exit` before the traffic will +/// actually be routed to the internet. #[derive(Clone, Debug)] pub enum WireguardConfig { - /// Strongly prefer to instantiate this variant using [`WireguardConfig::singlehop`] as that - /// will assert that the relay is of the expected type. + /// An exit relay. Singlehop { exit: Relay }, - /// Strongly prefer to instantiate this variant using [`WireguardConfig::multihop`] as that - /// will assert that the entry & exit relays are of the expected type. + /// An entry and an exit relay. Multihop { exit: Relay, entry: Relay }, } -/// TODO: Document +/// A type representing single Wireguard relay. +/// +/// Before you can read any data out of a [`Singlehop`] value uou need to convert it to [`WireguardConfig`]. +/// This is easy since [`Singlehop`] implements [`Into<WireguardConfig>`]. +/// +/// # Why not simply use [`Relay`]? +/// The only way to construct a [`Singlehop`] value is with [`Singlehop::new`] which performs +/// additional validation which guarantees that the relay actually is a Wireguard relay, while +/// [`Relay`] is not guaranteed to be a Wireguard relay. pub struct Singlehop(Relay); -/// TODO: Document +/// A type representing two Wireguard relay - an entry and an exit. +/// +/// Before you can read any data out of a [`Multihop`] value uou need to convert it to [`WireguardConfig`]. +/// This is easy since [`Multihop`] implements [`Into<WireguardConfig>`]. +/// +/// # Why not simply use [`Relay`]? +/// The same rationale as for [`Singlehop`] applies - [`Multihop::new`] performs additional +/// validation on the entry and exit relays. pub struct Multihop { entry: Relay, exit: Relay, |
