BandwidthEvent

Struct BandwidthEvent 

Source
pub struct BandwidthEvent {
    pub read: u64,
    pub written: u64,
    /* private fields */
}
Expand description

Event emitted every second with the bytes sent and received by Tor.

The BW event is one of the most commonly used events for monitoring Tor’s bandwidth usage. It provides a snapshot of data transfer rates over the last second.

§Event Format

The raw event format is: BW <bytes_read> <bytes_written>

§Use Cases

  • Monitoring bandwidth consumption
  • Building bandwidth graphs
  • Detecting network activity
  • Rate limiting applications

§Example

use stem_rs::events::BandwidthEvent;

fn handle_bandwidth(event: &BandwidthEvent) {
    let read_kbps = event.read as f64 / 1024.0;
    let written_kbps = event.written as f64 / 1024.0;
    println!("Bandwidth: {:.2} KB/s read, {:.2} KB/s written", read_kbps, written_kbps);
}

§See Also

Fields§

§read: u64

Bytes received by Tor in the last second.

§written: u64

Bytes sent by Tor in the last second.

Implementations§

Source§

impl BandwidthEvent

Source

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

Parses a bandwidth event from raw control protocol content.

§Arguments
  • content - The event content after the event type, e.g., “15 25”
§Errors

Returns Error::Protocol if:

  • The content is missing required values
  • The read or written values are not valid integers
§Example
let event = BandwidthEvent::parse("1024 2048")?;
assert_eq!(event.read, 1024);
assert_eq!(event.written, 2048);

Trait Implementations§

Source§

impl Clone for BandwidthEvent

Source§

fn clone(&self) -> BandwidthEvent

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 BandwidthEvent

Source§

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

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

impl Event for BandwidthEvent

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.