45 lines
1.1 KiB
Rust
45 lines
1.1 KiB
Rust
use generated::hello::{
|
|
FILE_DESCRIPTOR_SET, HelloReply, HelloRequest,
|
|
greeter_server::{Greeter, GreeterServer},
|
|
};
|
|
|
|
mod generated {
|
|
pub mod hello {
|
|
include!("generated/hello/hello.rs");
|
|
}
|
|
}
|
|
|
|
#[derive(Debug, Default)]
|
|
struct GreeterService;
|
|
|
|
#[tonic::async_trait]
|
|
impl Greeter for GreeterService {
|
|
async fn say_hello(
|
|
&self,
|
|
request: tonic::Request<HelloRequest>,
|
|
) -> Result<tonic::Response<HelloReply>, tonic::Status> {
|
|
let name = request.into_inner().name;
|
|
let reply = HelloReply {
|
|
message: format!("Hello, {}!", name),
|
|
};
|
|
Ok(tonic::Response::new(reply))
|
|
}
|
|
}
|
|
|
|
#[tokio::main]
|
|
async fn main() -> Result<(), Box<dyn std::error::Error>> {
|
|
let addr = "[::1]:50051".parse()?;
|
|
|
|
let reflection = tonic_reflection::server::Builder::configure()
|
|
.register_encoded_file_descriptor_set(FILE_DESCRIPTOR_SET)
|
|
.build_v1()?;
|
|
|
|
tonic::transport::Server::builder()
|
|
.add_service(reflection)
|
|
.add_service(GreeterServer::new(GreeterService::default()))
|
|
.serve(addr)
|
|
.await?;
|
|
|
|
return Ok(());
|
|
}
|