@@ -15,18 +15,18 @@ use crate::{
1515 EntryMessage , Error , ThriftMessage ,
1616} ;
1717
18- pub struct MakeClientTransport < MkT , MkC , Resp >
18+ pub struct MakeClientTransport < MkT , MkC , Req , Resp >
1919where
2020 MkT : MakeTransport ,
2121 MkC : MakeCodec < MkT :: ReadHalf , MkT :: WriteHalf > ,
2222{
2323 make_transport : MkT ,
2424 make_codec : MkC ,
25- _phantom : PhantomData < fn ( ) -> Resp > ,
25+ _phantom : PhantomData < ( fn ( ) -> Resp , fn ( ) -> Req ) > ,
2626}
2727
28- impl < MkT : MakeTransport , MkC : MakeCodec < MkT :: ReadHalf , MkT :: WriteHalf > , Resp > Clone
29- for MakeClientTransport < MkT , MkC , Resp >
28+ impl < MkT : MakeTransport , MkC : MakeCodec < MkT :: ReadHalf , MkT :: WriteHalf > , Req , Resp > Clone
29+ for MakeClientTransport < MkT , MkC , Req , Resp >
3030{
3131 fn clone ( & self ) -> Self {
3232 Self {
@@ -37,7 +37,7 @@ impl<MkT: MakeTransport, MkC: MakeCodec<MkT::ReadHalf, MkT::WriteHalf>, Resp> Cl
3737 }
3838}
3939
40- impl < MkT , MkC , Resp > MakeClientTransport < MkT , MkC , Resp >
40+ impl < MkT , MkC , Req , Resp > MakeClientTransport < MkT , MkC , Req , Resp >
4141where
4242 MkT : MakeTransport ,
4343 MkC : MakeCodec < MkT :: ReadHalf , MkT :: WriteHalf > ,
@@ -52,13 +52,14 @@ where
5252 }
5353}
5454
55- impl < MkT , MkC , Resp > UnaryService < Address > for MakeClientTransport < MkT , MkC , Resp >
55+ impl < MkT , MkC , Req , Resp > UnaryService < Address > for MakeClientTransport < MkT , MkC , Req , Resp >
5656where
5757 MkT : MakeTransport ,
5858 MkC : MakeCodec < MkT :: ReadHalf , MkT :: WriteHalf > + Sync ,
59- Resp : EntryMessage + Send + ' static ,
59+ Resp : EntryMessage + Send + ' static + Sync ,
60+ Req : EntryMessage + Send + ' static + Sync ,
6061{
61- type Response = ThriftTransport < MkC :: Encoder , Resp > ;
62+ type Response = ThriftTransport < MkC :: Encoder , Req , Resp > ;
6263 type Error = io:: Error ;
6364
6465 async fn call ( & self , target : Address ) -> Result < Self :: Response , Self :: Error > {
@@ -73,22 +74,24 @@ where
7374 }
7475}
7576
76- pub struct Client < Resp , MkT , MkC >
77+ pub struct Client < Req , Resp , MkT , MkC >
7778where
7879 MkT : MakeTransport ,
7980 MkC : MakeCodec < MkT :: ReadHalf , MkT :: WriteHalf > + Sync ,
80- Resp : EntryMessage + Send + ' static ,
81+ Resp : EntryMessage + Send + ' static + Sync ,
82+ Req : EntryMessage + Send + ' static + Sync ,
8183{
8284 #[ allow( clippy:: type_complexity) ]
83- make_transport : PooledMakeTransport < MakeClientTransport < MkT , MkC , Resp > , Address > ,
85+ make_transport : PooledMakeTransport < MakeClientTransport < MkT , MkC , Req , Resp > , Address > ,
8486 _marker : PhantomData < Resp > ,
8587}
8688
87- impl < Resp , MkT , MkC > Clone for Client < Resp , MkT , MkC >
89+ impl < Req , Resp , MkT , MkC > Clone for Client < Req , Resp , MkT , MkC >
8890where
8991 MkT : MakeTransport ,
9092 MkC : MakeCodec < MkT :: ReadHalf , MkT :: WriteHalf > + Sync ,
91- Resp : EntryMessage + Send + ' static ,
93+ Resp : EntryMessage + Send + ' static + Sync ,
94+ Req : EntryMessage + Send + ' static + Sync ,
9295{
9396 fn clone ( & self ) -> Self {
9497 Self {
@@ -98,11 +101,12 @@ where
98101 }
99102}
100103
101- impl < Resp , MkT , MkC > Client < Resp , MkT , MkC >
104+ impl < Req , Resp , MkT , MkC > Client < Req , Resp , MkT , MkC >
102105where
103106 MkT : MakeTransport ,
104107 MkC : MakeCodec < MkT :: ReadHalf , MkT :: WriteHalf > + Sync ,
105- Resp : EntryMessage + Send + ' static ,
108+ Resp : EntryMessage + Send + ' static + Sync ,
109+ Req : EntryMessage + Send + ' static + Sync ,
106110{
107111 pub fn new ( make_transport : MkT , pool_cfg : Option < Config > , make_codec : MkC ) -> Self {
108112 let make_transport = MakeClientTransport :: new ( make_transport, make_codec) ;
@@ -114,9 +118,9 @@ where
114118 }
115119}
116120
117- impl < Req , Resp , MkT , MkC > Service < ClientContext , ThriftMessage < Req > > for Client < Resp , MkT , MkC >
121+ impl < Req , Resp , MkT , MkC > Service < ClientContext , ThriftMessage < Req > > for Client < Req , Resp , MkT , MkC >
118122where
119- Req : Send + ' static + EntryMessage ,
123+ Req : Send + ' static + EntryMessage + Sync ,
120124 Resp : EntryMessage + Send + ' static + Sync ,
121125 MkT : MakeTransport ,
122126 MkC : MakeCodec < MkT :: ReadHalf , MkT :: WriteHalf > + Sync ,
0 commit comments