Crate stun_codec[−][src]
Encoders and decoders for STUN (RFC 5389).
Examples
use bytecodec::{DecodeExt, EncodeExt, Error}; use stun_codec::{Message, MessageClass, MessageDecoder, MessageEncoder, TransactionId}; use stun_codec::rfc5389::{attributes::Software, methods::BINDING, Attribute}; // Creates a message let mut message = Message::new(MessageClass::Request, BINDING, TransactionId::new([3; 12])); message.push_attribute(Attribute::Software(Software::new("foo".to_owned())?)); // Encodes the message let mut encoder = MessageEncoder::new(); let bytes = encoder.encode_into_bytes(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::<Attribute>::new(); let decoded = decoder.decode_from_bytes(&bytes)?.map_err(Error::from)?; assert_eq!(decoded.class(), message.class()); assert_eq!(decoded.method(), message.method()); assert_eq!(decoded.transaction_id(), message.transaction_id()); assert!(decoded.attributes().eq(message.attributes()));
References
Modules
net |
Socket address related components. |
rfc5389 |
RFC 5389 specific components. |
Structs
AttributeType |
Attribute type. |
BrokenMessage |
STUN message of which |
Message |
STUN message. |
MessageDecoder |
|
MessageEncoder |
|
Method |
STUN method. |
RawAttribute |
An |
RawAttributeDecoder |
|
RawAttributeEncoder |
|
TransactionId |
Transaction ID. |
Enums
MessageClass |
The class of a message. |
Traits
Attribute |
STUN attribute. |