#![allow(missing_docs)]
use serde::{Deserialize, Serialize};
use serde_json::Value;
#[derive(Deserialize, Serialize, Clone, Debug)]
#[serde(rename_all = "camelCase")]
pub struct Header {
pub id: String,
pub from: String,
pub to: String,
pub seq: i32,
pub ack: i32,
pub stream_id: String,
pub control_flags: i32,
}
#[derive(Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct HeaderID {
pub stream_id: String,
pub service_name: Option<String>,
pub procedure_name: Option<String>,
pub control_flags: i32,
pub seq: i32,
pub ack: i32,
}
#[derive(Deserialize, Serialize, Clone, Debug)]
#[serde(untagged)]
pub enum TransportMessage {
Control(TransportControlMessage),
Request(TransportRequestMessage),
}
#[derive(Deserialize, Serialize, Clone, Debug)]
#[serde(rename_all = "camelCase")]
pub struct TransportControlMessage {
#[serde(flatten)]
pub header: Header,
pub payload: super::Control,
}
#[derive(Deserialize, Serialize, Clone, Debug)]
#[serde(rename_all = "camelCase")]
pub struct TransportRequestMessage {
#[serde(flatten)]
pub header: Header,
#[serde(flatten)]
pub inner: RequestInner,
}
#[derive(Deserialize, Serialize, Clone, Debug)]
#[serde(rename_all_fields = "camelCase", untagged)]
pub enum RequestInner {
Init {
service_name: String,
procedure_name: String,
payload: Value,
},
Request { payload: Value },
}