1use facet::Facet;
4
5#[derive(Debug, Clone, PartialEq, Eq, Facet)]
7#[repr(u8)]
8pub enum CloseReason {
9 Normal,
11 Error(String),
13}
14
15#[derive(Debug, Clone, Copy, PartialEq, Eq, Facet)]
17#[repr(u8)]
18pub enum CancelReason {
19 ClientCancel,
21 DeadlineExceeded,
23 ResourceExhausted,
25}
26
27#[derive(Debug, Clone, Facet)]
37#[repr(u8)]
38pub enum ControlPayload {
39 OpenChannel {
41 channel_id: u32,
42 service_name: String,
43 method_name: String,
44 metadata: Vec<(String, Vec<u8>)>,
45 },
46 CloseChannel {
48 channel_id: u32,
49 reason: CloseReason,
50 },
51 CancelChannel {
53 channel_id: u32,
54 reason: CancelReason,
55 },
56 GrantCredits { channel_id: u32, bytes: u32 },
58 Ping { payload: [u8; 8] },
60 Pong { payload: [u8; 8] },
62}
63
64pub mod control_method {
66 pub const OPEN_CHANNEL: u32 = 1;
67 pub const CLOSE_CHANNEL: u32 = 2;
68 pub const CANCEL_CHANNEL: u32 = 3;
69 pub const GRANT_CREDITS: u32 = 4;
70 pub const PING: u32 = 5;
71 pub const PONG: u32 = 6;
72}