tor-circmgr: Introduce TargetPorts with a pretty Display impl
This commit is contained in:
parent
09116d7b4d
commit
d21b2cc6f5
|
@ -73,7 +73,7 @@ mod timeouts;
|
|||
mod usage;
|
||||
|
||||
pub use err::Error;
|
||||
pub use usage::{IsolationToken, StreamIsolation, StreamIsolationBuilder, TargetPort};
|
||||
pub use usage::{IsolationToken, StreamIsolation, StreamIsolationBuilder, TargetPort, TargetPorts};
|
||||
|
||||
pub use config::{
|
||||
CircMgrConfig, CircMgrConfigBuilder, CircuitTiming, CircuitTimingBuilder, PathConfig,
|
||||
|
|
|
@ -29,7 +29,9 @@ pub(crate) struct ExitPolicy {
|
|||
///
|
||||
/// Ordinarily, this is a TCP port, plus a flag to indicate whether we
|
||||
/// must support IPv4 or IPv6.
|
||||
#[derive(Clone, Copy, Debug, Deserialize, Eq, PartialEq, Hash, PartialOrd, Ord, Serialize)]
|
||||
#[derive(
|
||||
Clone, Copy, Debug, Deserialize, Eq, PartialEq, Hash, PartialOrd, Ord, Serialize, Default,
|
||||
)]
|
||||
pub struct TargetPort {
|
||||
/// True if this is a request to connect to an IPv6 address
|
||||
ipv6: bool,
|
||||
|
@ -66,6 +68,37 @@ impl Display for TargetPort {
|
|||
}
|
||||
}
|
||||
|
||||
/// Set of requestedd target ports, mostly for use in error reporting
|
||||
///
|
||||
/// Displays nicely.
|
||||
#[derive(Debug, Clone, Default)]
|
||||
pub struct TargetPorts(Vec<TargetPort>);
|
||||
|
||||
impl From<&'_ [TargetPort]> for TargetPorts {
|
||||
fn from(ports: &'_ [TargetPort]) -> Self {
|
||||
TargetPorts(ports.into())
|
||||
}
|
||||
}
|
||||
|
||||
impl Display for TargetPorts {
|
||||
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
|
||||
let brackets = self.0.len() != 1;
|
||||
if brackets {
|
||||
write!(f, "[")?;
|
||||
}
|
||||
for (i, port) in self.0.iter().enumerate() {
|
||||
if i > 0 {
|
||||
write!(f, ",")?;
|
||||
}
|
||||
write!(f, "{}", port)?;
|
||||
}
|
||||
if brackets {
|
||||
write!(f, "]")?;
|
||||
}
|
||||
Ok(())
|
||||
}
|
||||
}
|
||||
|
||||
/// A token used to isolate unrelated streams on different circuits.
|
||||
///
|
||||
/// When two streams are associated with different isolation tokens, they
|
||||
|
|
Loading…
Reference in New Issue