More async macro
This commit is contained in:
@@ -17,7 +17,7 @@ struct MyGreeter {
|
||||
|
||||
#[grpc(service = "proto/helloworld.proto")]
|
||||
impl MyGreeter {
|
||||
pub async fn say_hello(&mut self, request: Request<()>) -> Result<Response<()>, Status> {
|
||||
pub async fn say_hello(&self, request: Request<()>) -> Result<Response<()>, Status> {
|
||||
println!("Got a request: {:?}", request);
|
||||
|
||||
let string = &self.data;
|
||||
@@ -33,46 +33,11 @@ impl MyGreeter {
|
||||
}
|
||||
}
|
||||
|
||||
use std::future::Future;
|
||||
use std::task::{Poll, Context};
|
||||
pub trait Service<'a, Request> {
|
||||
type Response;
|
||||
type Error;
|
||||
type Future: Future<Output = Result<Self::Response, Self::Error>> + 'a;
|
||||
|
||||
fn poll_ready(&'a mut self, cx: &mut Context<'_>) -> Poll<Result<(), Self::Error>>;
|
||||
fn call(&'a mut self, req: Request) -> Self::Future;
|
||||
}
|
||||
|
||||
struct Svc {
|
||||
inner: MyGreeter,
|
||||
}
|
||||
|
||||
impl<'a> Service<'a, tonic::Request<()>> for Svc {
|
||||
type Response = tonic::Response<()>;
|
||||
type Error = tonic::Status;
|
||||
type Future = tonic::ResponseFuture<'a, Self::Response>;
|
||||
|
||||
fn poll_ready(
|
||||
&'a mut self,
|
||||
_cx: &mut std::task::Context<'_>,
|
||||
) -> std::task::Poll<Result<(), Self::Error>> {
|
||||
std::task::Poll::Ready(Ok(()))
|
||||
}
|
||||
|
||||
fn call(&'a mut self, request: tonic::Request<()>) -> Self::Future {
|
||||
use tonic::GrpcInnerService;
|
||||
self.inner.call(request)
|
||||
}
|
||||
}
|
||||
|
||||
#[tokio::test]
|
||||
async fn grpc() {
|
||||
let greeter = MyGreeter {
|
||||
data: "some data".into(),
|
||||
};
|
||||
let svc = MyGreeter::default();
|
||||
let mut server = GrpcServer::from(svc);
|
||||
|
||||
let mut svc = Svc { inner: greeter };
|
||||
|
||||
svc.call(Request::new(())).await.unwrap();
|
||||
use tower_service::Service;
|
||||
server.call(tonic::Request::new(())).await.unwrap();
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user