set up gprc server
This commit is contained in:
parent
ef19e3a9e7
commit
af5cd69f7b
5 changed files with 60 additions and 0 deletions
|
@ -26,9 +26,14 @@ toml = "0.5"
|
|||
planetwars-matchrunner = { path = "../planetwars-matchrunner" }
|
||||
config = { version = "0.12", features = ["toml"] }
|
||||
thiserror = "1.0.31"
|
||||
prost = "0.10"
|
||||
tonic = "0.7.2"
|
||||
|
||||
# TODO: remove me
|
||||
shlex = "1.1"
|
||||
|
||||
[build-dependencies]
|
||||
tonic-build = "0.7.2"
|
||||
|
||||
[dev-dependencies]
|
||||
parking_lot = "0.11"
|
||||
|
|
9
planetwars-server/build.rs
Normal file
9
planetwars-server/build.rs
Normal file
|
@ -0,0 +1,9 @@
|
|||
extern crate tonic_build;
|
||||
|
||||
fn main() -> Result<(), Box<dyn std::error::Error>> {
|
||||
tonic_build::configure()
|
||||
.build_server(true)
|
||||
.build_client(false)
|
||||
.compile(&["../proto/bot_api.proto"], &["../proto"])?;
|
||||
Ok(())
|
||||
}
|
30
planetwars-server/src/modules/bot_api.rs
Normal file
30
planetwars-server/src/modules/bot_api.rs
Normal file
|
@ -0,0 +1,30 @@
|
|||
pub mod pb {
|
||||
tonic::include_proto!("grpc.planetwars.bot_api");
|
||||
}
|
||||
|
||||
use std::net::SocketAddr;
|
||||
|
||||
use tonic;
|
||||
use tonic::transport::Server;
|
||||
use tonic::{Request, Response, Status};
|
||||
|
||||
pub struct BotApiServer {}
|
||||
|
||||
#[tonic::async_trait]
|
||||
impl pb::test_service_server::TestService for BotApiServer {
|
||||
async fn greet(&self, req: Request<pb::Hello>) -> Result<Response<pb::HelloResponse>, Status> {
|
||||
Ok(Response::new(pb::HelloResponse {
|
||||
response: format!("hallo {}", req.get_ref().hello_message),
|
||||
}))
|
||||
}
|
||||
}
|
||||
|
||||
pub async fn run_bot_api() {
|
||||
let server = BotApiServer {};
|
||||
let addr = SocketAddr::from(([127, 0, 0, 1], 50051));
|
||||
Server::builder()
|
||||
.add_service(pb::test_service_server::TestServiceServer::new(server))
|
||||
.serve(addr)
|
||||
.await
|
||||
.unwrap()
|
||||
}
|
|
@ -1,5 +1,6 @@
|
|||
// This module implements general domain logic, not directly
|
||||
// tied to the database or API layers.
|
||||
pub mod bot_api;
|
||||
pub mod bots;
|
||||
pub mod matches;
|
||||
pub mod ranking;
|
||||
|
|
15
proto/bot_api.proto
Normal file
15
proto/bot_api.proto
Normal file
|
@ -0,0 +1,15 @@
|
|||
syntax = "proto3";
|
||||
|
||||
package grpc.planetwars.bot_api;
|
||||
|
||||
message Hello {
|
||||
string hello_message = 1;
|
||||
}
|
||||
|
||||
message HelloResponse {
|
||||
string response = 1;
|
||||
}
|
||||
|
||||
service TestService {
|
||||
rpc greet(Hello) returns (HelloResponse);
|
||||
}
|
Loading…
Reference in a new issue