Skip to content

Commit

Permalink
Merge branch 'impl-health-server' of github.com:busyjay/grpc-rs into …
Browse files Browse the repository at this point in the history
…impl-health-server

Signed-off-by: Jay Lee <BusyJayLee@gmail.com>
  • Loading branch information
BusyJay committed Mar 16, 2021
2 parents 7d69878 + ab5b586 commit 1955c6c
Show file tree
Hide file tree
Showing 8 changed files with 713 additions and 104 deletions.
8 changes: 2 additions & 6 deletions health/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -14,17 +14,13 @@ readme = "README.md"

[features]
default = ["protobuf-codec", "use-bindgen"]
protobuf-codec = ["grpcio/protobuf-codec", "protobuf", "protobuf-build/grpcio-protobuf-codec"]
prost-codec = ["grpcio/prost-codec", "prost", "protobuf-build/grpcio-prost-codec", "lazy_static"]
protobuf-codec = ["grpcio/protobuf-codec", "protobuf"]
prost-codec = ["grpcio/prost-codec", "prost"]
use-bindgen = ["grpcio/use-bindgen"]

[dependencies]
futures = "0.3"
grpcio = { path = "..", features = ["secure"], version = "0.8.0", default-features = false }
prost = { version = "0.7", optional = true }
protobuf = { version = "2", optional = true }
lazy_static = { version = "1.3", optional = true }
log = "0.4"

[build-dependencies]
protobuf-build = { version = "0.12", default-features = false }
14 changes: 0 additions & 14 deletions health/build.rs

This file was deleted.

63 changes: 0 additions & 63 deletions health/proto/grpc/health/v1/health.proto

This file was deleted.

2 changes: 1 addition & 1 deletion health/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -34,5 +34,5 @@
pub mod proto;
mod service;

pub use self::proto::{create_health, HealthClient};
pub use self::proto::{create_health, HealthClient, ServingStatus};
pub use self::service::HealthService;
28 changes: 8 additions & 20 deletions health/src/proto.rs
Original file line number Diff line number Diff line change
Expand Up @@ -2,32 +2,20 @@

#[cfg(feature = "prost-codec")]
mod reexports {
include!(concat!(env!("OUT_DIR"), "/mod.rs"));
include!("proto/grpc.health.v1.rs");

pub use self::grpc::health::v1::*;
pub use self::health_check_response::ServingStatus;
}

#[cfg(feature = "protobuf-codec")]
#[allow(non_upper_case_globals)]
#[allow(deprecated)]
mod health;
#[cfg(feature = "protobuf-codec")]
mod health_grpc;
#[cfg(feature = "protobuf-codec")]
mod reexports {
include!(concat!(env!("OUT_DIR"), "/mod.rs"));

pub use self::health::*;
pub use self::health_grpc::*;

impl HealthCheckResponse_ServingStatus {
pub const Unknown: HealthCheckResponse_ServingStatus =
HealthCheckResponse_ServingStatus::UNKNOWN;
pub const Serving: HealthCheckResponse_ServingStatus =
HealthCheckResponse_ServingStatus::SERVING;
pub const NotServing: HealthCheckResponse_ServingStatus =
HealthCheckResponse_ServingStatus::NOT_SERVING;
pub const ServiceUnknown: HealthCheckResponse_ServingStatus =
HealthCheckResponse_ServingStatus::SERVICE_UNKNOWN;
}

pub use HealthCheckResponse_ServingStatus as ServingStatus;
pub use super::health::*;
pub use HealthCheckResponseServingStatus as ServingStatus;
}

pub use self::reexports::*;
48 changes: 48 additions & 0 deletions health/src/proto/grpc.health.v1.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct HealthCheckRequest {
#[prost(string, tag="1")]
pub service: ::prost::alloc::string::String,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct HealthCheckResponse {
#[prost(enumeration="health_check_response::ServingStatus", tag="1")]
pub status: i32,
}
/// Nested message and enum types in `HealthCheckResponse`.
pub mod health_check_response {
#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
#[repr(i32)]
pub enum ServingStatus {
Unknown = 0,
Serving = 1,
NotServing = 2,
/// Used only by the Watch method.
ServiceUnknown = 3,
}
}
const METHOD_HEALTH_CHECK: ::grpcio::Method<HealthCheckRequest, HealthCheckResponse> = ::grpcio::Method{ty: ::grpcio::MethodType::Unary, name: "/grpc.health.v1.Health/Check", req_mar: ::grpcio::Marshaller { ser: ::grpcio::pr_ser, de: ::grpcio::pr_de }, resp_mar: ::grpcio::Marshaller { ser: ::grpcio::pr_ser, de: ::grpcio::pr_de }, };
const METHOD_HEALTH_WATCH: ::grpcio::Method<HealthCheckRequest, HealthCheckResponse> = ::grpcio::Method{ty: ::grpcio::MethodType::ServerStreaming, name: "/grpc.health.v1.Health/Watch", req_mar: ::grpcio::Marshaller { ser: ::grpcio::pr_ser, de: ::grpcio::pr_de }, resp_mar: ::grpcio::Marshaller { ser: ::grpcio::pr_ser, de: ::grpcio::pr_de }, };
#[derive(Clone)]
pub struct HealthClient { client: ::grpcio::Client }
impl HealthClient {
pub fn new(channel: ::grpcio::Channel) -> Self { HealthClient { client: ::grpcio::Client::new(channel) }}
pub fn check_opt(&self, req: &HealthCheckRequest, opt: ::grpcio::CallOption) -> ::grpcio::Result<HealthCheckResponse,> { self.client.unary_call(&METHOD_HEALTH_CHECK, req, opt) }
pub fn check(&self, req: &HealthCheckRequest) -> ::grpcio::Result<HealthCheckResponse,> { self.check_opt(req, ::grpcio::CallOption::default()) }
pub fn check_async_opt(&self, req: &HealthCheckRequest, opt: ::grpcio::CallOption) -> ::grpcio::Result<::grpcio::ClientUnaryReceiver<HealthCheckResponse>,> { self.client.unary_call_async(&METHOD_HEALTH_CHECK, req, opt) }
pub fn check_async(&self, req: &HealthCheckRequest) -> ::grpcio::Result<::grpcio::ClientUnaryReceiver<HealthCheckResponse>,> { self.check_async_opt(req, ::grpcio::CallOption::default()) }
pub fn watch_opt(&self, req: &HealthCheckRequest, opt: ::grpcio::CallOption) -> ::grpcio::Result<::grpcio::ClientSStreamReceiver<HealthCheckResponse>,> { self.client.server_streaming(&METHOD_HEALTH_WATCH, req, opt) }
pub fn watch(&self, req: &HealthCheckRequest) -> ::grpcio::Result<::grpcio::ClientSStreamReceiver<HealthCheckResponse>,> { self.watch_opt(req, ::grpcio::CallOption::default()) }
pub fn spawn<F>(&self, f: F) where F: ::futures::Future<Output = ()> + Send + 'static {self.client.spawn(f)}
}
pub trait Health {
fn check(&mut self, ctx: ::grpcio::RpcContext, req: HealthCheckRequest, sink: ::grpcio::UnarySink<HealthCheckResponse>);
fn watch(&mut self, ctx: ::grpcio::RpcContext, req: HealthCheckRequest, sink: ::grpcio::ServerStreamingSink<HealthCheckResponse>);
}
pub fn create_health<S: Health + Send + Clone + 'static>(s: S) -> ::grpcio::Service {
let mut builder = ::grpcio::ServiceBuilder::new();
let mut instance = s.clone();
builder = builder.add_unary_handler(&METHOD_HEALTH_CHECK, move |ctx, req, resp| instance.check(ctx, req, resp));
let mut instance = s;
builder = builder.add_server_streaming_handler(&METHOD_HEALTH_WATCH, move |ctx, req, resp| instance.watch(ctx, req, resp));
builder.build()
}
Loading

0 comments on commit 1955c6c

Please sign in to comment.