ErrorCode

Struct ErrorCode 

Source
pub struct ErrorCode<'a> {
    pub code: u16,
    pub message: &'a str,
}
Expand description

The ERROR-CODE attribute is used in error response messages. It contains a numeric error code value in the range of 300 to 699 plus a textual reason phrase encoded in UTF-8 RFC3629; it is also consistent in its code assignments and semantics with SIP RFC3261 and HTTP RFC7231. The reason phrase is meant for diagnostic purposes and can be anything appropriate for the error code. Recommended reason phrases for the defined error codes are included in the IANA registry for error codes. The reason phrase MUST be a UTF-8-encoded RFC3629 sequence of fewer than 128 characters (which can be as long as 509 bytes when encoding them or 763 bytes when decoding them).

0                   1                   2                   3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|           Reserved, should be 0         |Class|     Number    |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|      Reason Phrase (variable)                                ..
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

             Figure 7: Format of ERROR-CODE Attribute

To facilitate processing, the class of the error code (the hundreds digit) is encoded separately from the rest of the code, as shown in Figure 7.

The Reserved bits SHOULD be 0 and are for alignment on 32-bit boundaries. Receivers MUST ignore these bits. The Class represents the hundreds digit of the error code. The value MUST be between 3 and 6. The Number represents the binary encoding of the error code modulo 100, and its value MUST be between 0 and 99.

Fields§

§code: u16§message: &'a str

Implementations§

Source§

impl ErrorCode<'_>

Source

pub fn serialize<B: BufMut>(self, bytes: &mut B)

encode the error type as bytes.

§Test
use bytes::BytesMut;
use turn_server::codec::message::attributes::error::ErrorType;
use turn_server::codec::Error;

let buffer = [
    0x00u8, 0x00, 0x03, 0x00, 0x54, 0x72, 0x79, 0x20, 0x41, 0x6c, 0x74,
    0x65, 0x72, 0x6e, 0x61, 0x74, 0x65,
];

let mut buf = BytesMut::with_capacity(1280);
let error = turn_server::codec::message::attributes::ErrorCode::from(ErrorType::TryAlternate);

error.serialize(&mut buf);
assert_eq!(&buf[..], &buffer);

Trait Implementations§

Source§

impl<'a> Attribute<'a> for ErrorCode<'a>

Source§

const TYPE: AttributeType = AttributeType::ErrorCode

current attribute type.
Source§

type Error = Error

Source§

type Item = ErrorCode<'a>

current attribute inner type.
Source§

fn serialize<B: BufMut>(value: Self::Item, bytes: &mut B, _: &'a [u8])

write the current attribute to the bytesfer.
Source§

fn deserialize(bytes: &'a [u8], _: &'a [u8]) -> Result<Self::Item, Self::Error>

convert bytesfer to current attribute.
Source§

impl<'a> Clone for ErrorCode<'a>

Source§

fn clone(&self) -> ErrorCode<'a>

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<'a> Debug for ErrorCode<'a>

Source§

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

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

impl From<ErrorType> for ErrorCode<'_>

Source§

fn from(value: ErrorType) -> Self

create error from error type.

§Example
use turn_server::codec::message::attributes::error::ErrorType;

// Error::from(ErrorType::TryAlternate);
Source§

impl PartialEq for ErrorCode<'_>

Source§

fn eq(&self, other: &Self) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · Source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
Source§

impl<'a> TryFrom<&'a [u8]> for ErrorCode<'a>

Source§

fn try_from(packet: &'a [u8]) -> Result<Self, Self::Error>

§Test
use std::convert::TryFrom;
use turn_server::codec::message::attributes::error::ErrorType;
use turn_server::codec::Error;

let buffer = [
    0x00u8, 0x00, 0x03, 0x00, 0x54, 0x72, 0x79, 0x20, 0x41, 0x6c, 0x74,
    0x65, 0x72, 0x6e, 0x61, 0x74, 0x65,
];

let error = turn_server::codec::message::attributes::ErrorCode::try_from(&buffer[..]).unwrap();
assert_eq!(error.code, ErrorType::TryAlternate as u16);
assert_eq!(error.message, "Try Alternate");
Source§

type Error = Error

The type returned in the event of a conversion error.
Source§

impl<'a> Copy for ErrorCode<'a>

Source§

impl Eq for ErrorCode<'_>

Auto Trait Implementations§

§

impl<'a> Freeze for ErrorCode<'a>

§

impl<'a> RefUnwindSafe for ErrorCode<'a>

§

impl<'a> Send for ErrorCode<'a>

§

impl<'a> Sync for ErrorCode<'a>

§

impl<'a> Unpin for ErrorCode<'a>

§

impl<'a> UnwindSafe for ErrorCode<'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> 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<Q, K> Equivalent<K> for Q
where Q: Eq + ?Sized, K: Borrow<Q> + ?Sized,

Source§

fn equivalent(&self, key: &K) -> bool

Checks if this value is equivalent to the given key. Read more
Source§

impl<Q, K> Equivalent<K> for Q
where Q: Eq + ?Sized, K: Borrow<Q> + ?Sized,

Source§

fn equivalent(&self, key: &K) -> bool

Compare self to key and return true if they are equal.
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> FromRef<T> for T
where T: Clone,

Source§

fn from_ref(input: &T) -> T

Converts to this type from a reference to the input type.
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> 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.
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,