Skip to main content

Agent

Struct Agent 

Source
pub struct Agent { /* private fields */ }
Expand description

An ICE agent as specified in RFC 8445

Implementations§

Source§

impl Agent

Source

pub fn builder() -> AgentBuilder

Create a new AgentBuilder

Source

pub fn id(&self) -> u64

A process-unique identifier for this agent.

Source

pub fn timing_advance(&self) -> Duration

The minimum amount of time between subsequent STUN requests sent.

This is known as the Ta value in the ICE specification.

The default value is 50ms.

Source

pub fn set_timing_advance(&mut self, ta: Duration)

Set the minimum amount of time between subsequent STUN requests sent.

This is known as the Ta value in the ICE specification.

The default value is 50ms.

Source

pub fn set_request_retransmits( &self, initial: Duration, max: Duration, retransmits: u32, final_retransmit_timeout: Duration, )

Configure the default timeouts and retransmissions for each STUN request.

  • initial - the initial time between consecutive transmissions. If 0, or 1, then only a single request will be performed.
  • max - the maximum amount of time between consecutive retransmits.
  • retransmits - the total number of transmissions of the request.
  • final_retransmit_timeout - the amount of time after the final transmission to wait for a response before considering the request as having timed out.

As specified in RFC 8489, initial_rto should be >= 500ms (unless specific information is available on the RTT, max is Duration::MAX, retransmits has a default value of 7, and last_retransmit_timeout should be 16 * initial_rto.

STUN transactions over TCP will only send a single request and have a timeout of the sum of the timeouts of a UDP transaction.

Source

pub fn add_stream(&self) -> Stream

Add a new Stream to this agent

§Examples

Add a Stream

let agent = Agent::default();
let s = agent.add_stream();
Source

pub fn stream(&self, id: usize) -> Option<Stream>

Retrieve a Stream by its ID from this Agent.

Source

pub fn close(&self, now: Instant)

Close the agent loop. Applications should wait for Agent::poll to return AgentPoll::Closed after calling this function.

Source

pub fn controlling(&self) -> bool

The controlling state of this ICE agent. This value may change throughout the ICE negotiation process.

Source

pub fn add_stun_server(&self, transport: TransportType, addr: Address)

Add a STUN server by address and transport to use for gathering potential candidates

Source

pub fn poll(&self, now: Instant) -> AgentPoll

Poll the Agent for further progress to be made.

The returned value indicates what the application needs to do.

Source

pub fn poll_transmit(&self, now: Instant) -> Option<AgentTransmit>

Poll for a transmission to be performed.

If not-None, then the provided data must be sent to the peer from the provided socket address.

Trait Implementations§

Source§

impl Clone for Agent

Source§

fn clone(&self) -> Self

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 Agent

Source§

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

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

impl Default for Agent

Source§

fn default() -> Self

Returns the “default value” for a type. Read more
Source§

impl Drop for Agent

Source§

fn drop(&mut self)

Executes the destructor for this type. Read more
Source§

impl Send for Agent

Source§

impl Sync for Agent

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> 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.