rill_protocol/io/
client.rs1use crate::io::codec::BinaryCodec;
2use crate::io::provider::{Description, EntryId, PackedEvent, PackedState, Path, RecorderRequest};
3use crate::io::transport::{DirectId, Origin, ServiceEnvelope};
4use meio_protocol::Protocol;
5use serde::{Deserialize, Serialize};
6
7pub type ClientReqId = DirectId<ClientProtocol>;
8
9#[derive(Debug, Default, Clone, Copy, Serialize, Deserialize, PartialEq, Eq, Hash)]
10pub struct ClientProtocol;
11
12impl Protocol for ClientProtocol {
13 type ToServer = ServiceEnvelope<Self, ClientRequest, ClientServiceResponse>;
14 type ToClient = ServiceEnvelope<Self, ClientResponse, ClientServiceRequest>;
15 type Codec = BinaryCodec;
16}
17
18impl Origin for ClientProtocol {}
19
20#[derive(Debug, Clone, Serialize, Deserialize)]
21pub struct ClientRequest {
22 pub path: Path,
23 pub request: RecorderRequest,
24}
25
26#[derive(Debug, Clone, Serialize, Deserialize)]
27pub enum ClientResponse {
28 Declare(EntryId),
29 Flow(Description),
30 State(PackedState),
31 Delta(PackedEvent),
32 Done,
34 Error(String),
35}
36
37#[derive(Debug, Clone, Serialize, Deserialize)]
38pub enum ClientServiceRequest {
39 AccessLevel(AccessLevel),
41}
42
43#[derive(Debug, Clone, Serialize, Deserialize)]
44pub enum ClientServiceResponse {
45 }
47
48#[derive(Debug, Clone, Serialize, Deserialize)]
53pub enum AccessLevel {
54 SessionCreated,
55 ReadyToAuth,
56 ReadyToWork,
57}