Fix ListFeaturesStream return type on RouteGuide Tutorial (#586)
This commit is contained in:
@@ -185,6 +185,7 @@ prost = "0.7"
|
|||||||
futures-core = "0.3"
|
futures-core = "0.3"
|
||||||
futures-util = "0.3"
|
futures-util = "0.3"
|
||||||
tokio = { version = "1.0", features = ["rt-multi-thread", "macros", "sync", "time"] }
|
tokio = { version = "1.0", features = ["rt-multi-thread", "macros", "sync", "time"] }
|
||||||
|
tokio-stream = "0.1"
|
||||||
|
|
||||||
async-stream = "0.2"
|
async-stream = "0.2"
|
||||||
serde = { version = "1.0", features = ["derive"] }
|
serde = { version = "1.0", features = ["derive"] }
|
||||||
@@ -273,6 +274,7 @@ use std::pin::Pin;
|
|||||||
use std::sync::Arc;
|
use std::sync::Arc;
|
||||||
use tokio::sync::mpsc;
|
use tokio::sync::mpsc;
|
||||||
use tonic::{Request, Response, Status};
|
use tonic::{Request, Response, Status};
|
||||||
|
use tokio_stream::wrappers::ReceiverStream;
|
||||||
```
|
```
|
||||||
|
|
||||||
```rust
|
```rust
|
||||||
@@ -282,7 +284,7 @@ impl RouteGuide for RouteGuideService {
|
|||||||
unimplemented!()
|
unimplemented!()
|
||||||
}
|
}
|
||||||
|
|
||||||
type ListFeaturesStream = mpsc::Receiver<Result<Feature, Status>>;
|
type ListFeaturesStream = ReceiverStream<Result<Feature, Status>>;
|
||||||
|
|
||||||
async fn list_features(
|
async fn list_features(
|
||||||
&self,
|
&self,
|
||||||
@@ -402,7 +404,7 @@ Now let's look at one of our streaming RPCs. `list_features` is a server-side st
|
|||||||
need to send back multiple `Feature`s to our client.
|
need to send back multiple `Feature`s to our client.
|
||||||
|
|
||||||
```rust
|
```rust
|
||||||
type ListFeaturesStream = mpsc::Receiver<Result<Feature, Status>>;
|
type ListFeaturesStream = ReceiverStream<Result<Feature, Status>>;
|
||||||
|
|
||||||
async fn list_features(
|
async fn list_features(
|
||||||
&self,
|
&self,
|
||||||
@@ -419,7 +421,7 @@ async fn list_features(
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
Ok(Response::new(rx))
|
Ok(Response::new(ReceiverStream::new(rx)))
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|||||||
@@ -5,6 +5,7 @@ use std::time::Instant;
|
|||||||
|
|
||||||
use futures::{Stream, StreamExt};
|
use futures::{Stream, StreamExt};
|
||||||
use tokio::sync::mpsc;
|
use tokio::sync::mpsc;
|
||||||
|
use tokio_stream::wrappers::ReceiverStream;
|
||||||
use tonic::transport::Server;
|
use tonic::transport::Server;
|
||||||
use tonic::{Request, Response, Status};
|
use tonic::{Request, Response, Status};
|
||||||
|
|
||||||
@@ -36,8 +37,7 @@ impl RouteGuide for RouteGuideService {
|
|||||||
Ok(Response::new(Feature::default()))
|
Ok(Response::new(Feature::default()))
|
||||||
}
|
}
|
||||||
|
|
||||||
type ListFeaturesStream =
|
type ListFeaturesStream = ReceiverStream<Result<Feature, Status>>;
|
||||||
Pin<Box<dyn Stream<Item = Result<Feature, Status>> + Send + Sync + 'static>>;
|
|
||||||
|
|
||||||
async fn list_features(
|
async fn list_features(
|
||||||
&self,
|
&self,
|
||||||
@@ -59,9 +59,7 @@ impl RouteGuide for RouteGuideService {
|
|||||||
println!(" /// done sending");
|
println!(" /// done sending");
|
||||||
});
|
});
|
||||||
|
|
||||||
Ok(Response::new(Box::pin(
|
Ok(Response::new(ReceiverStream::new(rx)))
|
||||||
tokio_stream::wrappers::ReceiverStream::new(rx),
|
|
||||||
)))
|
|
||||||
}
|
}
|
||||||
|
|
||||||
async fn record_route(
|
async fn record_route(
|
||||||
|
|||||||
Reference in New Issue
Block a user