Skip to main content

xidl_parser/jsonrpc_hir/
model.rs

1use serde::{Deserialize, Serialize};
2
3use crate::hir;
4
5#[derive(Debug, Clone, Serialize, Deserialize)]
6pub struct JsonRpcHirDocument {
7    pub spec: hir::Specification,
8    pub interfaces: Vec<JsonRpcInterface>,
9}
10
11#[derive(Debug, Clone, Serialize, Deserialize)]
12pub struct JsonRpcInterface {
13    pub ident: String,
14    pub module_path: Vec<String>,
15    pub annotations: Vec<hir::Annotation>,
16    pub methods: Vec<JsonRpcMethod>,
17    pub watch_methods: Vec<JsonRpcWatchMethod>,
18}
19
20#[derive(Debug, Clone, Serialize, Deserialize)]
21pub struct JsonRpcMethod {
22    pub source: JsonRpcMethodSource,
23    pub kind: JsonRpcMethodKind,
24    pub name: String,
25    pub rpc_name: String,
26    pub annotations: Vec<hir::Annotation>,
27    pub request_fields: Vec<JsonRpcField>,
28    pub response_fields: Vec<JsonRpcField>,
29    pub response_kind: JsonRpcResponseKind,
30    pub stream_item: Option<hir::TypeSpec>,
31}
32
33#[derive(Debug, Clone, Serialize, Deserialize)]
34pub struct JsonRpcWatchMethod {
35    pub getter_name: String,
36    pub item_ty: hir::TypeSpec,
37    pub stream_rpc_name: String,
38}
39
40#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)]
41pub enum JsonRpcMethodSource {
42    Operation,
43    AttributeGet,
44    AttributeSet,
45    AttributeStreamSource,
46}
47
48#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)]
49pub enum JsonRpcMethodKind {
50    Unary,
51    ServerStream,
52    ClientStream,
53    BidiStream,
54    StreamSource,
55}
56
57#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)]
58pub enum JsonRpcResponseKind {
59    Empty,
60    SingleReturn,
61    SingleOutput,
62    MultiOutput,
63}
64
65#[derive(Debug, Clone, Serialize, Deserialize)]
66pub struct JsonRpcField {
67    pub name: String,
68    pub wire_name: String,
69    pub ty: hir::TypeSpec,
70    pub annotations: Vec<hir::Annotation>,
71    pub required: bool,
72    pub source: JsonRpcFieldSource,
73}
74
75#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)]
76pub enum JsonRpcFieldSource {
77    Return,
78    Param,
79}