AddrMapEvent

Struct AddrMapEvent 

Source
pub struct AddrMapEvent {
    pub hostname: String,
    pub destination: Option<String>,
    pub expiry: Option<DateTime<Local>>,
    pub error: Option<String>,
    pub utc_expiry: Option<DateTime<Utc>>,
    pub cached: Option<bool>,
    /* private fields */
}
Expand description

Event indicating a new address mapping has been created.

Address map events are emitted when Tor creates a mapping between a hostname and its resolved address. This can occur due to DNS resolution, MAPADDRESS commands, or TrackHostExits configuration.

§Expiration

Address mappings have an expiration time after which they are no longer valid. The expiry field contains the local time, while utc_expiry contains the UTC time (if available).

§Caching

The cached field indicates whether the mapping will be kept until expiration (true) or may be evicted earlier (false).

§Error Mappings

When DNS resolution fails, destination will be None and the error field will contain the error code.

§Example

use stem_rs::events::AddrMapEvent;

fn handle_addrmap(event: &AddrMapEvent) {
    match &event.destination {
        Some(dest) => {
            println!("{} -> {} (expires: {:?})",
                event.hostname, dest, event.expiry);
        }
        None => {
            println!("Resolution failed for {}: {:?}",
                event.hostname, event.error);
        }
    }
}

Fields§

§hostname: String

The hostname being resolved.

§destination: Option<String>

The resolved address, or None if resolution failed.

§expiry: Option<DateTime<Local>>

Expiration time in local time.

§error: Option<String>

Error code if resolution failed.

§utc_expiry: Option<DateTime<Utc>>

Expiration time in UTC.

§cached: Option<bool>

Whether the mapping is cached until expiration.

Implementations§

Source§

impl AddrMapEvent

Source

pub fn parse(content: &str) -> Result<Self, Error>

Parses an address map event from raw control protocol content.

§Arguments
  • content - The event content after the event type
§Event Format
Hostname Destination Expiry [error=...] [EXPIRES="..."] [CACHED=YES|NO]
§Errors

Returns Error::Protocol if required fields are missing.

Trait Implementations§

Source§

impl Clone for AddrMapEvent

Source§

fn clone(&self) -> AddrMapEvent

Returns a duplicate of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for AddrMapEvent

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Event for AddrMapEvent

Source§

fn event_type(&self) -> EventType

Returns the type of this event. Read more
Source§

fn raw_content(&self) -> &str

Returns the raw, unparsed content of the event. Read more
Source§

fn arrived_at(&self) -> Instant

Returns the instant when this event was received. Read more

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

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

Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.