Skip to main content

krossbar_rpc/
message.rs

1use bson::Bson;
2use serde::{Deserialize, Serialize};
3
4/// RPC message
5#[derive(Serialize, Deserialize, Debug, Clone)]
6pub struct RpcMessage {
7    pub id: i64,
8    pub data: RpcData,
9}
10
11/// RPC message data
12#[derive(Serialize, Deserialize, Debug, Clone)]
13pub enum RpcData {
14    /// One way message
15    Message { endpoint: String, body: Bson },
16    /// RPC call
17    Call { endpoint: String, params: Bson },
18    /// Subscription request
19    Subscription { endpoint: String },
20    /// Connection request
21    /// `client_name` - initiator client name
22    /// `target_name` - connection target name, which can be used
23    ///     to implement gateways
24    ConnectionRequest {
25        client_name: String,
26        target_name: String,
27    },
28    /// Message response
29    Response(crate::Result<Bson>),
30    /// Mesage response, which precedes incoming FD
31    FdResponse(crate::Result<Bson>),
32}