DirMgr: Improve display for DocSource
(Also, implement Display for tor_dirclient::SourceInfo).
This commit is contained in:
parent
ef2640acfa
commit
f70ad60e65
|
@ -3446,6 +3446,7 @@ version = "0.3.0"
|
|||
dependencies = [
|
||||
"async-compression",
|
||||
"base64",
|
||||
"derive_more",
|
||||
"futures",
|
||||
"futures-await-test",
|
||||
"hex",
|
||||
|
|
|
@ -29,6 +29,7 @@ tor-rtcompat = { path = "../tor-rtcompat", version = "0.3.0"}
|
|||
|
||||
async-compression = { version = "0.3.5", features = ["futures-io", "zlib"] }
|
||||
base64 = "0.13.0"
|
||||
derive_more = "0.99"
|
||||
futures = "0.3.14"
|
||||
hex = "0.4"
|
||||
http = "0.2"
|
||||
|
|
|
@ -23,7 +23,8 @@ pub struct DirResponse {
|
|||
///
|
||||
/// We use this to remember when a request has failed, so we can
|
||||
/// abandon the circuit.
|
||||
#[derive(Debug, Clone)]
|
||||
#[derive(Debug, Clone, derive_more::Display)]
|
||||
#[display(fmt = "{cache_id} via {circuit}")]
|
||||
pub struct SourceInfo {
|
||||
/// Unique identifier for the circuit we're using
|
||||
circuit: UniqId,
|
||||
|
|
|
@ -255,20 +255,28 @@ impl<'a> BoolResetter<'a> {
|
|||
///
|
||||
/// Used (for example) to report where we got a document from if it fails to
|
||||
/// parse.
|
||||
#[derive(Debug, Clone, derive_more::Display)]
|
||||
#[derive(Debug, Clone)]
|
||||
#[non_exhaustive]
|
||||
pub enum DocSource {
|
||||
/// We loaded the document from our cache.
|
||||
#[display(fmt = "local cache")]
|
||||
LocalCache,
|
||||
/// We fetched the document from a server.
|
||||
#[display(fmt = "directory server")]
|
||||
DirServer {
|
||||
/// Information about the server we fetched the document from.
|
||||
source: Option<SourceInfo>,
|
||||
},
|
||||
}
|
||||
|
||||
impl std::fmt::Display for DocSource {
|
||||
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
|
||||
match self {
|
||||
DocSource::LocalCache => write!(f, "local cache"),
|
||||
DocSource::DirServer { source: None } => write!(f, "directory server"),
|
||||
DocSource::DirServer { source: Some(info) } => write!(f, "directory server {}", info),
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
impl<R: Runtime> DirMgr<R> {
|
||||
/// Try to load the directory from disk, without launching any
|
||||
/// kind of update process.
|
||||
|
|
Loading…
Reference in New Issue