protosocket_prost/
prost_socket.rs1use std::marker::PhantomData;
2
3use protosocket::{ConnectionBindings, MessageReactor};
4
5use crate::prost_serializer::ProstSerializer;
6
7pub struct ProstServerConnectionBindings<Request, Response, Reactor, Stream> {
10 _phantom: PhantomData<(Request, Response, Reactor, Stream)>,
11}
12
13impl<Request, Response, Reactor, TStream> ConnectionBindings
14 for ProstServerConnectionBindings<Request, Response, Reactor, TStream>
15where
16 Request: prost::Message + Default + Unpin + 'static,
17 Response: prost::Message + Unpin + 'static,
18 Reactor: MessageReactor<Inbound = Request>,
19 TStream: tokio::io::AsyncRead + tokio::io::AsyncWrite + Send + Unpin + 'static,
20{
21 type Deserializer = ProstSerializer<Request, Response>;
22 type Serializer = ProstSerializer<Request, Response>;
23 type Reactor = Reactor;
24 type Stream = TStream;
25}
26
27pub struct ProstClientConnectionBindings<Request, Response, Reactor, TStream> {
30 _phantom: PhantomData<(Request, Response, Reactor, TStream)>,
31}
32
33impl<Request, Response, Reactor, TStream> ConnectionBindings
34 for ProstClientConnectionBindings<Request, Response, Reactor, TStream>
35where
36 Request: prost::Message + Default + Unpin + 'static,
37 Response: prost::Message + Default + Unpin + 'static,
38 Reactor: MessageReactor<Inbound = Response>,
39 TStream: tokio::io::AsyncRead + tokio::io::AsyncWrite + Send + Unpin + 'static,
40{
41 type Deserializer = ProstSerializer<Response, Request>;
42 type Serializer = ProstSerializer<Response, Request>;
43 type Reactor = Reactor;
44 type Stream = TStream;
45}