@@ -613,7 +613,7 @@ pub fn dummy_report_sender() -> ReportSender {
613
613
Box :: new ( || { } )
614
614
}
615
615
616
- pub type GenericSender < T > = Box < dyn Sink < T , Error = SendError > > ;
616
+ pub type GenericSender < T > = Box < dyn Sink < T , Error = SendError > + Unpin > ;
617
617
// Box<S> implements Stream only if S: Stream + Unpin
618
618
pub type GenericReceiver < T > = Box < dyn Stream < Item = T > + Unpin > ;
619
619
@@ -631,7 +631,14 @@ pub struct SqmrServerPayload<Query, Response: TryFrom<Bytes>> {
631
631
#[ allow( dead_code) ]
632
632
struct SqmrClientPayloadForNetwork {
633
633
pub query : Bytes ,
634
- pub report_receiver : BoxFuture < ' static , SessionId > ,
634
+ pub report_receiver : oneshot:: Receiver < ( ) > ,
635
+ pub responses_sender : GenericSender < Bytes > ,
636
+ }
637
+
638
+ #[ allow( dead_code) ]
639
+ struct SqmrServerPayloadForNetwork {
640
+ pub query : Bytes ,
641
+ pub report_sender : oneshot:: Sender < ( ) > ,
635
642
pub responses_sender : GenericSender < Bytes > ,
636
643
}
637
644
@@ -645,11 +652,18 @@ pub type SqmrServerReceiver<Query, Response> = GenericReceiver<SqmrServerPayload
645
652
#[ allow( dead_code) ]
646
653
type SqmrServerSender = GenericSender < SqmrServerPayloadForNetwork > ;
647
654
648
- impl < Query , Response : TryFrom < Bytes > > From < SqmrClientPayload < Query , Response > >
649
- for SqmrClientPayloadForNetwork
655
+ impl < Query , Response > From < SqmrClientPayload < Query , Response > > for SqmrClientPayloadForNetwork
656
+ where
657
+ Bytes : From < Query > ,
658
+ Response : TryFrom < Bytes > + ' static ,
659
+ <Response as TryFrom < Bytes > >:: Error : ' static ,
650
660
{
651
- fn from ( _query : SqmrClientPayload < Query , Response > ) -> Self {
652
- unimplemented ! ( )
661
+ fn from ( payload : SqmrClientPayload < Query , Response > ) -> Self {
662
+ let SqmrClientPayload { query, report_receiver, responses_sender } = payload;
663
+ let query = Bytes :: from ( query) ;
664
+ let responses_sender =
665
+ Box :: new ( responses_sender. with ( |response| ready ( Ok ( Response :: try_from ( response) ) ) ) ) ;
666
+ Self { query, report_receiver, responses_sender }
653
667
}
654
668
}
655
669
@@ -661,13 +675,6 @@ impl<Query, Response: TryFrom<Bytes>> From<SqmrServerPayloadForNetwork>
661
675
}
662
676
}
663
677
664
- #[ allow( dead_code) ]
665
- struct SqmrServerPayloadForNetwork {
666
- pub query : Bytes ,
667
- pub report_sender : oneshot:: Sender < ( ) > ,
668
- pub responses_sender : GenericSender < Bytes > ,
669
- }
670
-
671
678
// TODO(shahak): Create a custom struct if Box dyn becomes an overhead.
672
679
// TODO(eitan): Change type to oneshot::Sender<()>
673
680
pub type ReportSender = Box < dyn FnOnce ( ) + Send > ;
0 commit comments