ftth_rsip/headers/typed/
cseq.rs1#[doc(hidden)]
2pub use super::tokenizers::CseqTokenizer as Tokenizer;
3
4use crate::common::Method;
5use rsip_derives::TypedHeader;
6use std::convert::TryFrom;
7
8#[derive(TypedHeader, Eq, PartialEq, Clone, Debug)]
10pub struct CSeq {
11 pub seq: u32,
12 pub method: Method,
13}
14
15impl From<(u32, Method)> for CSeq {
16 fn from(tuple: (u32, Method)) -> Self {
17 Self {
18 seq: tuple.0,
19 method: tuple.1,
20 }
21 }
22}
23
24impl<'a> TryFrom<Tokenizer<'a>> for CSeq {
25 type Error = crate::Error;
26
27 fn try_from(tokenizer: Tokenizer) -> Result<Self, Self::Error> {
28 Ok(CSeq {
29 seq: tokenizer.seq.parse::<u32>()?,
30 method: tokenizer.method.parse::<Method>()?,
31 })
32 }
33}
34
35impl std::fmt::Display for CSeq {
36 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
37 write!(f, "{} {}", self.seq, self.method)
38 }
39}