stun_codec

stun_codec Documentation Actions Status Coverage Status License: MIT

Encoders and decoders for STUN (RFC 5389) and its extensions.

Documentation

Examples

```rust use bytecodec::{DecodeExt, EncodeExt, Error}; use stuncodec::{Message, MessageClass, MessageDecoder, MessageEncoder, TransactionId}; use stuncodec::rfc5389::{attributes::Software, methods::BINDING, Attribute};

// Creates a message let mut message = Message::new(MessageClass::Request, BINDING, TransactionId::new([3; 12])); message.addattribute(Attribute::Software(Software::new("foo".toowned())?));

// Encodes the message let mut encoder = MessageEncoder::new(); let bytes = encoder.encodeintobytes(message.clone())?; assert_eq!( bytes, [ 0, 1, 0, 8, 33, 18, 164, 66, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 128, 34, 0, 3, 102, 111, 111, 0 ] );

// Decodes the message let mut decoder = MessageDecoder::::new(); let decoded = decoder.decodefrombytes(&bytes)?.maperr(Error::from)?; asserteq!(decoded.class(), message.class()); asserteq!(decoded.method(), message.method()); asserteq!(decoded.transactionid(), message.transactionid()); assert!(decoded.attributes().eq(message.attributes())); ```

References