use poem::{listener::TcpListener, Server};
use poem_grpc::{Request, Response, RouteGrpc, Status};
poem_grpc::include_proto!("helloworld");
struct GreeterService;
#[poem::async_trait]
impl Greeter for GreeterService {
async fn say_hello(
&self,
request: Request<HelloRequest>,
) -> Result<Response<HelloReply>, Status> {
let reply = HelloReply {
message: format!("Hello {}!", request.into_inner().name),
};
Ok(Response::new(reply))
}
}
#[tokio::main]
async fn main() -> Result<(), std::io::Error> {
let route = RouteGrpc::new().add_service(GreeterServer::new(GreeterService));
Server::new(TcpListener::bind("127.0.0.1:3000"))
.run(route)
.await
}
This crate uses #![forbid(unsafe_code)]
to ensure everything is implemented in 100% Safe Rust.
The minimum supported Rust version for this crate is 1.64.0
.
🎈 Thanks for your help improving the project! We are so happy to have you!
Licensed under either of
- Apache License, Version 2.0,(LICENSE-APACHE or http://www.apache.org/licenses/LICENSE-2.0)
- MIT license (LICENSE-MIT or http://opensource.org/licenses/MIT) at your option.
Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in Poem by you, shall be licensed as Apache, without any additional terms or conditions.