binary_cookies/decode/
stream.rs

1use crate::{
2    cookie::{Checksum, Cookie, Metadata},
3    decode::{
4        binary_cookies::BinaryCookieFsm,
5        cookies::{CookieFsm, CookiesOffsetInPage},
6        meta::{MetaFsm, MetaOffset},
7        pages::{PageFsm, PagesOffset},
8    },
9};
10
11#[derive(Clone)]
12#[derive(Debug)]
13#[derive(Default)]
14/// `StreamDecoder`'s state
15pub(crate) enum State {
16    Bc {
17        fsm: BinaryCookieFsm,
18    },
19    Page {
20        fsm: PageFsm,
21        remaining_page: u32,
22    },
23    Cookie {
24        fsm: CookieFsm,
25        remaining_cookie: u32,
26        remaining_page: u32,
27    },
28    Meta {
29        fsm: MetaFsm,
30    },
31    Finished,
32    #[default]
33    Transition,
34}
35
36#[derive(Clone)]
37#[derive(Debug)]
38/// `StreamDecoder` return Values
39pub enum Values {
40    /// Some metadata
41    Bc {
42        meta_offset: MetaOffset,
43        pages_offset: PagesOffset,
44    },
45    /// Some metadata
46    Page(CookiesOffsetInPage),
47    /// A cookie
48    Cookie(Cookie),
49    /// Binarycookies metadata
50    Meta {
51        checksum: Checksum,
52        meta: Option<Metadata>,
53    },
54}