Add timeout support to car-rs streaming

This commit is contained in:
Piv
2022-10-01 18:28:19 +09:30
parent f48518e88f
commit 8dae07722a

View File

@@ -2,13 +2,13 @@ pub mod motor_control_service {
tonic::include_proto!("motor_control"); tonic::include_proto!("motor_control");
} }
use std::sync::{Arc, Mutex}; use std::time::Duration;
use car_rs::{Servo, Vehicle}; use car_rs::{Servo, Vehicle};
use motor_control_service::car_control_server::CarControl;
use tonic::{Request, Response, Status, Streaming};
use futures_util::StreamExt; 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::{ use self::motor_control_service::{
RecordingReqeust, RecordingResponse, SaveRequest, SaveResponse, SteeringRequest, RecordingReqeust, RecordingResponse, SaveRequest, SaveResponse, SteeringRequest,
@@ -39,14 +39,14 @@ impl CarControl for MotorControlService {
request: Request<Streaming<Vehicle2DRequest>>, request: Request<Streaming<Vehicle2DRequest>>,
) -> Result<Response<Vehicle2DResponse>, Status> { ) -> Result<Response<Vehicle2DResponse>, Status> {
let mut stream = request.into_inner(); let mut stream = request.into_inner();
while let Ok(Some(req)) = time::timeout(Duration::from_secs(3), stream.next()).await {
let mut timed_out = false; // TODO: Set vehicle steering/throttle
while let Some(req) = stream.next().await {
if !timed_out {}
timed_out = true;
} }
unimplemented!() // TODO: Stop the vehicle...
// self.vehicle.stop();
Ok(Response::new(Vehicle2DResponse {}))
} }
async fn record( async fn record(