pub struct DirMgr<R: Runtime> { /* private fields */ }
Expand description

A directory manager to download, fetch, and cache a Tor directory.

A DirMgr can operate in three modes:

  • In offline mode, it only reads from the cache, and can only read once.
  • In read-only mode, it reads from the cache, but checks whether it can acquire an associated lock file. If it can, then it enters read-write mode. If not, it checks the cache periodically for new information.
  • In read-write mode, it knows that no other process will be writing to the cache, and it takes responsibility for fetching data from the network and updating the directory with new directory information.

Implementations

Try to load the directory from disk, without launching any kind of update process.

This function runs in offline mode: it will give an error if the result is not up-to-date, or not fully downloaded.

In general, you shouldn’t use this function in a long-running program; it’s only suitable for command-line or batch tools.

Return a current netdir, either loading it or bootstrapping it as needed.

Like load_once, but will try to bootstrap (or wait for another process to bootstrap) if we don’t have an up-to-date bootstrapped directory.

In general, you shouldn’t use this function in a long-running program; it’s only suitable for command-line or batch tools.

Create a new DirMgr in online mode, but don’t bootstrap it yet.

The DirMgr can be bootstrapped later with bootstrap.

Bootstrap a DirMgr created in online mode that hasn’t been bootstrapped yet.

This function will not return until the directory is bootstrapped enough to build circuits. It will also launch a background task that fetches any missing information, and that replaces the directory when a new one is available.

This function is intended to be used together with create_unbootstrapped. There is no need to call this function otherwise.

If bootstrapping has already successfully taken place, returns early with success.

Errors

Returns an error if bootstrapping fails. If the error is Error::CantAdvanceState, it may be possible to successfully bootstrap later on by calling this function again.

Panics

Panics if the DirMgr passed to this function was not created in online mode, such as via load_once.

Returns true if a bootstrap attempt is in progress, or successfully completed.

Return a new directory manager from a given configuration, bootstrapping from the network as necessary.

Try to change our configuration to new_config.

Actual behavior will depend on the value of how.

Return a stream of DirBootstrapStatus events to tell us about changes in the latest directory’s bootstrap status.

Note that this stream can be lossy: the caller will not necessarily observe every event on the stream

Return an Arc handle to our latest directory, if we have one.

Return an Arc handle to our latest directory, returning an error if there is none.

Errors

Errors with Error::DirectoryNotPresent if the DirMgr hasn’t been bootstrapped yet.

Return a new asynchronous stream that will receive notification whenever the consensus has changed.

Multiple events may be batched up into a single item: each time this stream yields an event, all you can assume is that the event has occurred at least once.

Try to load the text of a single document described by doc from storage.

Load the text for a collection of documents.

If many of the documents have the same type, this can be more efficient than calling text.

Trait Implementations

Return a handle to our latest directory, if we have one.

Return a new asynchronous stream that will receive notification whenever the consensus has changed. Read more

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

Immutably borrows from an owned value. Read more

Mutably borrows from an owned value. Read more

Convert Box<dyn Trait> (where Trait: Downcast) to Box<dyn Any>. Box<dyn Any> can then be further downcast into Box<ConcreteType> where ConcreteType implements Trait. Read more

Convert Rc<Trait> (where Trait: Downcast) to Rc<Any>. Rc<Any> can then be further downcast into Rc<ConcreteType> where ConcreteType implements Trait. Read more

Convert &Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot generate &Any’s vtable from &Trait’s. Read more

Convert &mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot generate &mut Any’s vtable from &mut Trait’s. Read more

Convert Arc<Trait> (where Trait: Downcast) to Arc<Any>. Arc<Any> can then be further downcast into Arc<ConcreteType> where ConcreteType implements Trait. Read more

Returns the argument unchanged.

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more

Instruments this type with the current Span, returning an Instrumented wrapper. Read more

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Should always be Self

The type returned in the event of a conversion error.

Performs the conversion.

The type returned in the event of a conversion error.

Performs the conversion.

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more