Skip to main content

nautilus_binance/spot/sbe/generated/
group_size_encoding_codec.rs

1pub use decoder::GroupSizeEncodingDecoder;
2pub use encoder::GroupSizeEncodingEncoder;
3
4use super::*;
5
6pub const ENCODED_LENGTH: usize = 6;
7
8pub mod encoder {
9    use super::*;
10
11    #[derive(Debug, Default)]
12    pub struct GroupSizeEncodingEncoder<P> {
13        parent: Option<P>,
14        offset: usize,
15    }
16
17    impl<'a, P> Writer<'a> for GroupSizeEncodingEncoder<P>
18    where
19        P: Writer<'a> + Default,
20    {
21        #[inline]
22        fn get_buf_mut(&mut self) -> &mut WriteBuf<'a> {
23            if let Some(parent) = self.parent.as_mut() {
24                parent.get_buf_mut()
25            } else {
26                panic!("parent was None")
27            }
28        }
29    }
30
31    impl<'a, P> GroupSizeEncodingEncoder<P>
32    where
33        P: Writer<'a> + Default,
34    {
35        pub fn wrap(mut self, parent: P, offset: usize) -> Self {
36            self.parent = Some(parent);
37            self.offset = offset;
38            self
39        }
40
41        #[inline]
42        pub fn parent(&mut self) -> SbeResult<P> {
43            self.parent.take().ok_or(SbeErr::ParentNotSet)
44        }
45
46        /// primitive field 'blockLength'
47        /// - min value: 0
48        /// - max value: 65534
49        /// - null value: 0xffff_u16
50        /// - characterEncoding: null
51        /// - semanticType: null
52        /// - encodedOffset: 0
53        /// - encodedLength: 2
54        /// - version: 0
55        #[inline]
56        pub fn block_length(&mut self, value: u16) {
57            let offset = self.offset;
58            self.get_buf_mut().put_u16_at(offset, value);
59        }
60
61        /// primitive field 'numInGroup'
62        /// - min value: 0
63        /// - max value: 2147483647
64        /// - null value: 0xffffffff_u32
65        /// - characterEncoding: null
66        /// - semanticType: null
67        /// - encodedOffset: 2
68        /// - encodedLength: 4
69        /// - version: 0
70        #[inline]
71        pub fn num_in_group(&mut self, value: u32) {
72            let offset = self.offset + 2;
73            self.get_buf_mut().put_u32_at(offset, value);
74        }
75    }
76} // end encoder mod
77
78pub mod decoder {
79    use super::*;
80
81    #[derive(Debug, Default)]
82    pub struct GroupSizeEncodingDecoder<P> {
83        parent: Option<P>,
84        offset: usize,
85    }
86
87    impl<'a, P> ActingVersion for GroupSizeEncodingDecoder<P>
88    where
89        P: Reader<'a> + ActingVersion + Default,
90    {
91        #[inline]
92        fn acting_version(&self) -> u16 {
93            self.parent.as_ref().unwrap().acting_version()
94        }
95    }
96
97    impl<'a, P> Reader<'a> for GroupSizeEncodingDecoder<P>
98    where
99        P: Reader<'a> + Default,
100    {
101        #[inline]
102        fn get_buf(&self) -> &ReadBuf<'a> {
103            self.parent.as_ref().expect("parent missing").get_buf()
104        }
105    }
106
107    impl<'a, P> GroupSizeEncodingDecoder<P>
108    where
109        P: Reader<'a> + Default,
110    {
111        pub fn wrap(mut self, parent: P, offset: usize) -> Self {
112            self.parent = Some(parent);
113            self.offset = offset;
114            self
115        }
116
117        #[inline]
118        pub fn parent(&mut self) -> SbeResult<P> {
119            self.parent.take().ok_or(SbeErr::ParentNotSet)
120        }
121
122        /// primitive field - 'REQUIRED'
123        #[inline]
124        pub fn block_length(&self) -> u16 {
125            self.get_buf().get_u16_at(self.offset)
126        }
127
128        /// primitive field - 'REQUIRED'
129        #[inline]
130        pub fn num_in_group(&self) -> u32 {
131            self.get_buf().get_u32_at(self.offset + 2)
132        }
133    }
134} // end decoder mod