ChannelData

Struct ChannelData 

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

The ChannelData Message

The ChannelData message is used to carry application data between the client and the server.

The Channel Number field specifies the number of the channel on which the data is traveling, and thus, the address of the peer that is sending or is to receive the data.

The Length field specifies the length in bytes of the application data field (i.e., it does not include the size of the ChannelData header). Note that 0 is a valid length.

The Application Data field carries the data the client is trying to send to the peer, or that the peer is sending to the client.

Implementations§

Source§

impl<'a> ChannelData<'a>

Source

pub fn new(number: u16, bytes: &'a [u8]) -> Self

Source

pub fn number(&self) -> u16

Source

pub fn bytes(&self) -> &'a [u8]

Source

pub fn message_size(bytes: &[u8], is_tcp: bool) -> Result<usize, Error>

§Test
use bytes::{BufMut, BytesMut};
use turn_server::codec::channel_data::ChannelData;

let data: [u8; 4] = [0x40, 0x00, 0x00, 0x40];
let mut bytes = BytesMut::with_capacity(1500);

ChannelData::new(16384, &data[..]).encode(&mut bytes);

let size = ChannelData::message_size(&bytes[..], false).unwrap();

assert_eq!(size, 8);
Source

pub fn encode(self, bytes: &mut BytesMut)

§Test
use bytes::{BufMut, BytesMut};
use turn_server::codec::channel_data::ChannelData;

let data: [u8; 4] = [0x40, 0x00, 0x00, 0x40];
let mut bytes = BytesMut::with_capacity(1500);

ChannelData::new(16384, &data[..]).encode(&mut bytes);

let ret = ChannelData::decode(&bytes[..]).unwrap();

assert_eq!(ret.number(), 16384);
assert_eq!(ret.bytes(), &data[..]);
Source

pub fn decode(bytes: &'a [u8]) -> Result<Self, Error>

§Test
use bytes::{BufMut, BytesMut};
use turn_server::codec::channel_data::ChannelData;

let data: [u8; 4] = [0x40, 0x00, 0x00, 0x40];
let mut bytes = BytesMut::with_capacity(1500);

ChannelData::new(16384, &data[..]).encode(&mut bytes);

let ret = ChannelData::decode(&bytes[..]).unwrap();

assert_eq!(ret.number(), 16384);
assert_eq!(ret.bytes(), &data[..]);

Auto Trait Implementations§

§

impl<'a> Freeze for ChannelData<'a>

§

impl<'a> RefUnwindSafe for ChannelData<'a>

§

impl<'a> Send for ChannelData<'a>

§

impl<'a> Sync for ChannelData<'a>

§

impl<'a> Unpin for ChannelData<'a>

§

impl<'a> UnwindSafe for ChannelData<'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<T> IntoRequest<T> for T

Source§

fn into_request(self) -> Request<T>

Wrap the input message T in a tonic::Request
Source§

impl<L> LayerExt<L> for L

Source§

fn named_layer<S>(&self, service: S) -> Layered<<L as Layer<S>>::Service, S>
where L: Layer<S>,

Applies the layer to a service and wraps it in Layered.
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
Source§

impl<T> ErasedDestructor for T
where T: 'static,