From 380d81dd86a4d4ab2a23a7d9c072eab67631c331 Mon Sep 17 00:00:00 2001 From: David Pedersen Date: Mon, 12 Jul 2021 16:47:45 +0200 Subject: [PATCH] fix(build): allow services to be named `Service` (#709) Fixes https://github.com/hyperium/tonic/issues/676 --- Cargo.toml | 1 + tests/service_named_service/Cargo.toml | 16 ++++++++++++++++ tests/service_named_service/build.rs | 3 +++ tests/service_named_service/proto/foo.proto | 11 +++++++++++ tests/service_named_service/src/lib.rs | 3 +++ tonic-build/src/client.rs | 4 ++-- tonic-build/src/server.rs | 2 +- 7 files changed, 37 insertions(+), 3 deletions(-) create mode 100644 tests/service_named_service/Cargo.toml create mode 100644 tests/service_named_service/build.rs create mode 100644 tests/service_named_service/proto/foo.proto create mode 100644 tests/service_named_service/src/lib.rs diff --git a/Cargo.toml b/Cargo.toml index 9fd8d2f99..f05cc4fab 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -14,6 +14,7 @@ members = [ # Tests "tests/included_service", "tests/same_name", + "tests/service_named_service", "tests/wellknown", "tests/wellknown-compiled", "tests/extern_path/uuid", diff --git a/tests/service_named_service/Cargo.toml b/tests/service_named_service/Cargo.toml new file mode 100644 index 000000000..573b049dc --- /dev/null +++ b/tests/service_named_service/Cargo.toml @@ -0,0 +1,16 @@ +[package] +name = "service_named_service" +version = "0.1.0" +authors = ["Lucio Franco "] +edition = "2018" +publish = false +license = "MIT" + +# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html + +[dependencies] +tonic = { path = "../../tonic" } +prost = "0.8" + +[build-dependencies] +tonic-build = { path = "../../tonic-build" } diff --git a/tests/service_named_service/build.rs b/tests/service_named_service/build.rs new file mode 100644 index 000000000..ba5ab11cf --- /dev/null +++ b/tests/service_named_service/build.rs @@ -0,0 +1,3 @@ +fn main() { + tonic_build::compile_protos("proto/foo.proto").unwrap(); +} diff --git a/tests/service_named_service/proto/foo.proto b/tests/service_named_service/proto/foo.proto new file mode 100644 index 000000000..6ca5b4864 --- /dev/null +++ b/tests/service_named_service/proto/foo.proto @@ -0,0 +1,11 @@ +syntax = "proto3"; + +package foo; + +service Service { + rpc Foo(stream FooRequest) returns (stream FooResponse) {} +} + +message FooRequest {} + +message FooResponse {} diff --git a/tests/service_named_service/src/lib.rs b/tests/service_named_service/src/lib.rs new file mode 100644 index 000000000..0c5549a13 --- /dev/null +++ b/tests/service_named_service/src/lib.rs @@ -0,0 +1,3 @@ +pub mod pb { + tonic::include_proto!("foo"); +} diff --git a/tonic-build/src/client.rs b/tonic-build/src/client.rs index d3c109ff4..7eaa09417 100644 --- a/tonic-build/src/client.rs +++ b/tonic-build/src/client.rs @@ -69,11 +69,11 @@ pub fn generate( pub fn with_interceptor(inner: T, interceptor: F) -> #service_ident> where F: FnMut(tonic::Request<()>) -> Result, tonic::Status>, - T: Service< + T: tonic::codegen::Service< http::Request, Response = http::Response<>::ResponseBody> >, - >>::Error: Into + Send + Sync, + >>::Error: Into + Send + Sync, { #service_ident::new(InterceptedService::new(inner, interceptor)) } diff --git a/tonic-build/src/server.rs b/tonic-build/src/server.rs index 5feb816fc..1b2f61f73 100644 --- a/tonic-build/src/server.rs +++ b/tonic-build/src/server.rs @@ -112,7 +112,7 @@ pub fn generate( #configure_compression_methods } - impl Service> for #server_service + impl tonic::codegen::Service> for #server_service where T: #server_trait, B: Body + Send + Sync + 'static,