From 8dae07722ac30d262e7737c5de3afbb18285f967 Mon Sep 17 00:00:00 2001 From: Piv <18462828+Piv200@users.noreply.github.com> Date: Sat, 1 Oct 2022 18:28:19 +0930 Subject: [PATCH] Add timeout support to car-rs streaming --- car-rs/src/grpcserver.rs | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/car-rs/src/grpcserver.rs b/car-rs/src/grpcserver.rs index 84d3a0c..8642591 100644 --- a/car-rs/src/grpcserver.rs +++ b/car-rs/src/grpcserver.rs @@ -2,13 +2,13 @@ pub mod motor_control_service { tonic::include_proto!("motor_control"); } -use std::sync::{Arc, Mutex}; +use std::time::Duration; use car_rs::{Servo, Vehicle}; -use motor_control_service::car_control_server::CarControl; -use tonic::{Request, Response, Status, Streaming}; - use futures_util::StreamExt; +use motor_control_service::car_control_server::CarControl; +use tokio::time; +use tonic::{Request, Response, Status, Streaming}; use self::motor_control_service::{ RecordingReqeust, RecordingResponse, SaveRequest, SaveResponse, SteeringRequest, @@ -39,14 +39,14 @@ impl CarControl for MotorControlService { request: Request>, ) -> Result, Status> { let mut stream = request.into_inner(); - - let mut timed_out = false; - while let Some(req) = stream.next().await { - if !timed_out {} - timed_out = true; + while let Ok(Some(req)) = time::timeout(Duration::from_secs(3), stream.next()).await { + // TODO: Set vehicle steering/throttle } - unimplemented!() + // TODO: Stop the vehicle... + // self.vehicle.stop(); + + Ok(Response::new(Vehicle2DResponse {})) } async fn record(