cardano_sdk/protocol/blockfetch.rs
1use super::*;
2use cbored::CborRepr;
3use strum::EnumDiscriminants;
4
5/// BlockFetch state machine
6///
7/// [] -> [RequestRange, ClientDone]
8/// RequestRange -> [StartBatch, NoBlocks]
9/// Block -> [Block, BatchDone]
10/// BatchDone -> []
11/// ClientDone -> !
12#[derive(Debug, Clone, CborRepr, EnumDiscriminants)]
13#[cborrepr(enumtype = "tagvariant")]
14#[strum_discriminants(name(BlockFetchKind))]
15pub enum BlockFetch {
16 RequestRange { from: Point, to: Point },
17 ClientDone,
18 StartBatch,
19 NoBlocks,
20 Block(SerializedBlock),
21 BatchDone,
22}
23
24impl Protocol for BlockFetch {
25 const NUMBER: u16 = 3;
26}