seraphic 0.1.55

Lightweight JSON RPC 2.0
Documentation
pub mod async_io;
pub mod serde_;
pub mod sync_io;
use seraphic::{
    derive::{RequestWrapper, ResponseWrapper, RpcNamespace, RpcRequest},
    packet::TcpPacket,
    ResponseWrapper, RpcNamespace, RpcRequest, RpcResponse,
};
use serde::{Deserialize, Serialize};

#[derive(RpcNamespace, Clone, Copy, PartialEq, Eq)]
pub enum TestNS {
    Test,
}

#[derive(RpcRequest, Clone, Deserialize, Serialize, Debug, PartialEq)]
#[rpc_request(namespace = "TestNS:test")]
pub struct TestRequest {}

#[derive(Debug, Clone, Serialize, Deserialize, PartialEq)]
pub struct TestResponse {}

#[derive(RpcRequest, Clone, Deserialize, Serialize, Debug, PartialEq)]
#[rpc_request(namespace = "TestNS:test")]
pub struct FooRequest {}

#[derive(Debug, Clone, Serialize, Deserialize, PartialEq)]
pub struct FooResponse {}

#[derive(Debug, Clone, RequestWrapper, PartialEq)]
pub enum MyRequest {
    Test(TestRequest),
    Foo(FooRequest),
}

#[derive(Debug, Clone, ResponseWrapper, PartialEq)]
pub enum MyResponse {
    Test(TestResponse),
    Foo(FooResponse),
}

pub type Message = seraphic::Message<MyRequest, MyResponse>;
pub type MessagePacket = TcpPacket<Message>;