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

The 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( &mut 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(&mut self) -> usize

Add a new Stream to this agent

§Examples

Add a Stream

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

pub fn close(&mut 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(&mut self, transport: TransportType, addr: SocketAddr)

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

Source

pub fn stun_servers(&self) -> &[(TransportType, SocketAddr)]

The current list of STUN servers used by this Agent

Source

pub fn add_turn_server(&mut self, config: TurnConfig)

Add a TURN server by address, transport, and credentials to use for gathering potential candidates.

Source

pub fn turn_servers(&self) -> &[TurnConfig]

The current list of TURN servers used by this Agent

Source

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

Get a Stream by id.

If the stream does not exist, then None will be returned.

Source

pub fn mut_stream(&mut self, id: usize) -> Option<StreamMut<'_>>

Get a StreamMut by id. If the stream does not exist, then None will be returned.

Source

pub fn poll(&mut 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(&mut 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 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

Auto Trait Implementations§

§

impl !RefUnwindSafe for Agent

§

impl !UnwindSafe for Agent

§

impl Freeze for Agent

§

impl Send for Agent

§

impl Sync for Agent

§

impl Unpin for Agent

§

impl UnsafeUnpin for Agent

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> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

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

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
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, 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.
Source§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

Source§

fn vzip(self) -> V

Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

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

fn with_current_subscriber(self) -> WithDispatch<Self>

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