@@ -11,6 +11,7 @@ use std::sync::{Arc, Weak};
1111use tokio_io:: { AsyncRead , AsyncWrite } ;
1212
1313use crate :: proto:: bind:: BindFuture ;
14+ use crate :: proto:: codec:: FrontendMessage ;
1415use crate :: proto:: connection:: { Request , RequestMessages } ;
1516use crate :: proto:: copy_in:: { CopyInFuture , CopyInReceiver , CopyMessage } ;
1617use crate :: proto:: copy_out:: CopyOutStream ;
@@ -185,8 +186,12 @@ impl Client {
185186 if let Ok ( ref mut buf) = buf {
186187 frontend:: sync ( buf) ;
187188 }
188- let pending =
189- PendingRequest ( buf. map ( |m| ( RequestMessages :: Single ( m) , self . 0 . idle . guard ( ) ) ) ) ;
189+ let pending = PendingRequest ( buf. map ( |m| {
190+ (
191+ RequestMessages :: Single ( FrontendMessage :: Raw ( m) ) ,
192+ self . 0 . idle . guard ( ) ,
193+ )
194+ } ) ) ;
190195 BindFuture :: new ( self . clone ( ) , pending, name, statement. clone ( ) )
191196 }
192197
@@ -208,12 +213,12 @@ impl Client {
208213 where
209214 S : Stream ,
210215 S :: Item : IntoBuf ,
211- <S :: Item as IntoBuf >:: Buf : Send ,
216+ <S :: Item as IntoBuf >:: Buf : ' static + Send ,
212217 S :: Error : Into < Box < dyn StdError + Sync + Send > > ,
213218 {
214219 let ( mut sender, receiver) = mpsc:: channel ( 1 ) ;
215220 let pending = PendingRequest ( self . excecute_message ( statement, params) . map ( |data| {
216- match sender. start_send ( CopyMessage { data , done : false } ) {
221+ match sender. start_send ( CopyMessage :: Message ( data ) ) {
217222 Ok ( AsyncSink :: Ready ) => { }
218223 _ => unreachable ! ( "channel should have capacity" ) ,
219224 }
@@ -278,7 +283,7 @@ impl Client {
278283 frontend:: sync ( & mut buf) ;
279284 let ( sender, _) = mpsc:: channel ( 0 ) ;
280285 let _ = self . 0 . sender . unbounded_send ( Request {
281- messages : RequestMessages :: Single ( buf) ,
286+ messages : RequestMessages :: Single ( FrontendMessage :: Raw ( buf) ) ,
282287 sender,
283288 idle : None ,
284289 } ) ;
@@ -326,20 +331,23 @@ impl Client {
326331 & self ,
327332 statement : & Statement ,
328333 params : & [ & dyn ToSql ] ,
329- ) -> Result < Vec < u8 > , Error > {
334+ ) -> Result < FrontendMessage , Error > {
330335 let mut buf = self . bind_message ( statement, "" , params) ?;
331336 frontend:: execute ( "" , 0 , & mut buf) . map_err ( Error :: parse) ?;
332337 frontend:: sync ( & mut buf) ;
333- Ok ( buf)
338+ Ok ( FrontendMessage :: Raw ( buf) )
334339 }
335340
336341 fn pending < F > ( & self , messages : F ) -> PendingRequest
337342 where
338343 F : FnOnce ( & mut Vec < u8 > ) -> Result < ( ) , Error > ,
339344 {
340345 let mut buf = vec ! [ ] ;
341- PendingRequest (
342- messages ( & mut buf) . map ( |( ) | ( RequestMessages :: Single ( buf) , self . 0 . idle . guard ( ) ) ) ,
343- )
346+ PendingRequest ( messages ( & mut buf) . map ( |( ) | {
347+ (
348+ RequestMessages :: Single ( FrontendMessage :: Raw ( buf) ) ,
349+ self . 0 . idle . guard ( ) ,
350+ )
351+ } ) )
344352 }
345353}
0 commit comments