moq_transfork/message/
group.rs1use crate::coding::*;
2
3#[derive(Clone, Debug)]
4pub struct Group {
5 pub subscribe: u64,
7
8 pub sequence: u64,
10}
11
12impl Decode for Group {
13 fn decode<R: bytes::Buf>(r: &mut R) -> Result<Self, DecodeError> {
14 Ok(Self {
15 subscribe: u64::decode(r)?,
16 sequence: u64::decode(r)?,
17 })
18 }
19}
20
21impl Encode for Group {
22 fn encode<W: bytes::BufMut>(&self, w: &mut W) {
23 self.subscribe.encode(w);
24 self.sequence.encode(w);
25 }
26}
27
28#[derive(Clone, Debug, Copy, PartialEq, Eq)]
30pub enum GroupOrder {
31 Asc,
32 Desc,
33}
34
35impl Decode for GroupOrder {
36 fn decode<R: bytes::Buf>(r: &mut R) -> Result<Self, DecodeError> {
37 match u64::decode(r)? {
38 0 => Ok(Self::Asc),
39 1 => Ok(Self::Desc),
40 _ => Err(DecodeError::InvalidValue),
41 }
42 }
43}
44
45impl Encode for GroupOrder {
46 fn encode<W: bytes::BufMut>(&self, w: &mut W) {
47 let v: u64 = match self {
48 Self::Asc => 0,
49 Self::Desc => 1,
50 };
51 v.encode(w)
52 }
53}
54
55#[derive(Clone, Debug)]
56pub struct GroupDrop {
57 pub sequence: u64,
58 pub count: u64,
59 pub code: u32,
60}
61
62impl Encode for GroupDrop {
63 fn encode<W: bytes::BufMut>(&self, w: &mut W) {
64 self.sequence.encode(w);
65 self.count.encode(w);
66 self.code.encode(w);
67 }
68}
69
70impl Decode for GroupDrop {
71 fn decode<R: bytes::Buf>(r: &mut R) -> Result<Self, DecodeError> {
72 Ok(Self {
73 sequence: u64::decode(r)?,
74 count: u64::decode(r)?,
75 code: u32::decode(r)?,
76 })
77 }
78}