Skip to main content

StreamMut

Struct StreamMut 

Source
pub struct StreamMut<'a> { /* private fields */ }
Expand description

A (mutable) ICE stream

Implementations§

Source§

impl<'a> StreamMut<'a>

Source

pub fn mut_agent(&'a mut self) -> &'a mut Agent

The Agent that handles this Stream.

Source

pub fn add_component(&mut self) -> Result<usize, AgentError>

Add a Component to this stream.

§Examples

Add a Component

let mut agent = Agent::default();
let stream_id = agent.add_stream();
let mut stream = agent.mut_stream(stream_id).unwrap();
let component_id = stream.add_component().unwrap();
let component = stream.component(component_id).unwrap();
assert_eq!(component.id(), component::RTP);
Source

pub fn mut_component(&mut self, index: usize) -> Option<ComponentMut<'_>>

Retrieve mutable access to a component in this stream. None will be returned if the component does not exist

Source

pub fn set_local_credentials(&mut self, credentials: Credentials)

Set local ICE credentials for this Stream.

§Examples
let mut agent = Agent::default();
let stream_id = agent.add_stream();
let mut stream = agent.mut_stream(stream_id).unwrap();
let credentials = Credentials {ufrag: "1".to_owned(), passwd: "2".to_owned()};
stream.set_local_credentials(credentials);
Source

pub fn set_remote_credentials(&mut self, credentials: Credentials)

Set remote ICE credentials for this Stream.

§Examples
let mut agent = Agent::default();
let stream_id = agent.add_stream();
let mut stream = agent.mut_stream(stream_id).unwrap();
let credentials = Credentials {ufrag: "1".to_owned(), passwd: "2".to_owned()};
stream.set_remote_credentials(credentials);
Source

pub fn add_remote_candidate(&mut self, cand: Candidate)

Add a remote candidate for connection checks for use with this stream

§Examples
let mut agent = Agent::default();
let stream_id = agent.add_stream();
let mut stream = agent.mut_stream(stream_id).unwrap();
let component_id = stream.add_component().unwrap();
let component = stream.component(component_id).unwrap();
let addr = "127.0.0.1:9999".parse().unwrap();
let candidate = Candidate::builder(
    0,
    CandidateType::Host,
    TransportType::Udp,
    "0",
    addr
)
.build();
stream.add_remote_candidate(candidate);
Source

pub fn handle_incoming_data<T: AsRef<[u8]> + Debug>( &mut self, component_id: usize, transmit: Transmit<T>, now: Instant, ) -> HandleRecvReply<T>

Provide the stream with data that has been received on an external socket. The returned value indicates what has been done with the data and any application data that has been received.

Source

pub fn poll_recv(&mut self) -> Option<PendingRecv>

Poll for any received data.

Must be called after handle_incoming_data if have_more_data is true.

Source

pub fn end_of_remote_candidates(&mut self)

Indicate that no more candidates are expected from the peer. This may allow the ICE process to complete.

Source

pub fn allocated_socket( &mut self, component_id: usize, transport: TransportType, from: SocketAddr, to: SocketAddr, local_addr: Result<SocketAddr, StunError>, now: Instant, )

Provide a reply to the AgentPoll::AllocateSocket request. The component_id, transport, from, and to values must match exactly with the request.

Source

pub fn add_local_candidate(&mut self, candidate: Candidate) -> bool

Add a local candidate for this stream.

Returns whether the candidate was added internally.

Source

pub fn add_local_gathered_candidate( &mut self, candidate: GatheredCandidate, ) -> bool

Add a local candidate for this stream.

Returns whether the candidate was added internally.

Source

pub fn end_of_local_candidates(&mut self)

Signal the end of local candidates. Calling this function may allow ICE processing to complete.

Methods from Deref<Target = Stream<'a>>§

Source

pub fn agent(&self) -> &'a Agent

The Agent that handles this Stream.

Source

pub fn id(&self) -> usize

The stream identifier within a particular ICE Agent

§Examples
let mut agent = Agent::default();
let stream_id = agent.add_stream();
let stream = agent.stream(stream_id).unwrap();
assert_eq!(stream.id(), stream_id);
Source

pub fn component(&self, index: usize) -> Option<Component<'_>>

Retrieve a Component from this stream. If the index doesn’t exist or a component is not available at that index, None is returned

§Examples

Remove a Component

let mut agent = Agent::default();
let stream_id = agent.add_stream();
let mut stream = agent.mut_stream(stream_id).unwrap();
let component_id = stream.add_component().unwrap();
let component = stream.component(component_id).unwrap();
assert_eq!(component.id(), component::RTP);
assert!(stream.component(component::RTP).is_some());

Retrieving a Component that doesn’t exist will return None

let mut agent = Agent::default();
let stream_id = agent.add_stream();
let stream = agent.stream(stream_id).unwrap();
assert!(stream.component(component::RTP).is_none());
Source

pub fn local_credentials(&self) -> Option<Credentials>

Retreive the previouly set local ICE credentials for this Stream.

§Examples
let mut agent = Agent::default();
let stream_id = agent.add_stream();
let mut stream = agent.mut_stream(stream_id).unwrap();
let credentials = Credentials {ufrag: "1".to_owned(), passwd: "2".to_owned()};
stream.set_local_credentials(credentials.clone());
assert_eq!(stream.local_credentials(), Some(credentials));
Source

pub fn remote_credentials(&self) -> Option<Credentials>

Retreive the previouly set remote ICE credentials for this Stream.

§Examples
let mut agent = Agent::default();
let stream_id = agent.add_stream();
let mut stream = agent.mut_stream(stream_id).unwrap();
let credentials = Credentials {ufrag: "1".to_owned(), passwd: "2".to_owned()};
stream.set_remote_credentials(credentials.clone());
assert_eq!(stream.remote_credentials(), Some(credentials));
Source

pub fn local_candidates(&self) -> impl Iterator<Item = &Candidate> + '_

Retrieve previously gathered local candidates

Source

pub fn remote_candidates(&self) -> &[Candidate]

Retrieve previously set remote candidates for connection checks from this stream

§Examples
let mut agent = Agent::default();
let stream_id = agent.add_stream();
let mut stream = agent.mut_stream(stream_id).unwrap();
let component_id = stream.add_component().unwrap();
let component = stream.component(component_id).unwrap();
let addr = "127.0.0.1:9999".parse().unwrap();
let candidate = Candidate::builder(
    0,
    CandidateType::Host,
    TransportType::Udp,
    "0",
    addr
)
.build();
stream.add_remote_candidate(candidate.clone());
let remote_cands = stream.remote_candidates();
assert_eq!(remote_cands.len(), 1);
assert_eq!(remote_cands[0], candidate);
Source

pub fn component_ids_iter(&self) -> impl Iterator<Item = usize> + '_

Return an Iterator over all the component ids in this stream.

Trait Implementations§

Source§

impl<'a> Debug for StreamMut<'a>

Source§

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

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

impl<'a> Deref for StreamMut<'a>

Source§

type Target = Stream<'a>

The resulting type after dereferencing.
Source§

fn deref(&self) -> &Self::Target

Dereferences the value.

Auto Trait Implementations§

§

impl<'a> !RefUnwindSafe for StreamMut<'a>

§

impl<'a> !UnwindSafe for StreamMut<'a>

§

impl<'a> Freeze for StreamMut<'a>

§

impl<'a> Send for StreamMut<'a>

§

impl<'a> Sync for StreamMut<'a>

§

impl<'a> Unpin for StreamMut<'a>

§

impl<'a> UnsafeUnpin for StreamMut<'a>

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<P, T> Receiver for P
where P: Deref<Target = T> + ?Sized, T: ?Sized,

Source§

type Target = T

🔬This is a nightly-only experimental API. (arbitrary_self_types)
The target type on which the method may be called.
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