Advertisement
Guest User

Untitled

a guest
Feb 22nd, 2020
151
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Rust 1.14 KB | None | 0 0
  1.  
  2. async fn connect_to_server(
  3.     &self,
  4.     request: Request<Streaming<Bytes>>,
  5. ) -> Result<Response<Self::ConnectToServerStream>, Status> {
  6.     let mut stream = request.into_inner();
  7.     let handler = self.handler.clone();
  8.  
  9.     let output = async_stream::try_stream! {
  10.         loop {
  11.             match stream.try_next().await {
  12.                 Ok(payload) => {
  13.                     match payload {
  14.                         Some(bytes) => {
  15.                             let buffer = bytes.bytes;
  16.                             let mut guard = handler.try_lock().unwrap();
  17.                             let result = guard.handle_request(buffer);
  18.                             yield Bytes {bytes: result}
  19.                         },
  20.                         None => {
  21.                             println!("Done");
  22.                             break
  23.                         }
  24.                     }
  25.                 },
  26.                 Err(err) => {
  27.                     eprintln!("Error: {:?}", err);
  28.                     break
  29.                 }
  30.             }
  31.         }
  32.     };
  33.     Ok(Response::new(Box::pin(output) as Self::ConnectToServerStream))
  34. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement