diff options
-rw-r--r-- | src/cpp/server/default_health_check_service.cc | 29 | ||||
-rw-r--r-- | src/cpp/server/default_health_check_service.h | 25 | ||||
-rw-r--r-- | src/cpp/server/health_check_service_server_builder_option.cc | 4 | ||||
-rw-r--r-- | src/cpp/server/server_cc.cc | 25 |
4 files changed, 39 insertions, 44 deletions
diff --git a/src/cpp/server/default_health_check_service.cc b/src/cpp/server/default_health_check_service.cc index 45f51a97b6..704243e831 100644 --- a/src/cpp/server/default_health_check_service.cc +++ b/src/cpp/server/default_health_check_service.cc @@ -31,6 +31,10 @@ * */ +#include <mutex> + +#include <grpc++/impl/codegen/method_handler_impl.h> + #include "src/cpp/server/default_health_check_service.h" namespace grpc { @@ -40,43 +44,42 @@ const char kHealthCheckMethodName[] = "/grpc.health.v1.Health/Check"; } // namespace -SyncHealthCheckServiceImpl::SyncHealthCheckServiceImpl( - DefaultHealthCheckService* service) +DefaultHealthCheckService::SyncHealthCheckServiceImpl:: + SyncHealthCheckServiceImpl(DefaultHealthCheckService* service) : service_(service) { auto* handler = new RpcMethodHandler<SyncHealthCheckServiceImpl, ByteBuffer, ByteBuffer>( std::mem_fn(&SyncHealthCheckServiceImpl::Check), this); auto* method = new RpcServiceMethod(kHealthCheckMethodName, RpcMethod::NORMAL_RPC, handler); - AddMethod(mehtod); + AddMethod(method); } -Status SyncHealthCheckServiceImpl::Check(ServerContext* context, - const ByteBuffer* request, - ByteBuffer* response) { +Status DefaultHealthCheckService::SyncHealthCheckServiceImpl::Check( + ServerContext* context, const ByteBuffer* request, ByteBuffer* response) { // TODO nanopb return Status::OK; } DefaultHealthCheckService::DefaultHealthCheckService() { - services_map_.insert("", true); + services_map_.emplace("", true); } void DefaultHealthCheckService::SetServingStatus( - const grpc::string& service_name, bool serving) override { + const grpc::string& service_name, bool serving) { std::lock_guard<std::mutex> lock(mu_); services_map_[service_name] = serving; } -void SetServingStatus(bool serving) override { +void DefaultHealthCheckService::SetServingStatus(bool serving) { std::lock_guard<std::mutex> lock(mu_); - for (auto& iter = services_map_.begin(); iter != services_map_.end(); - ++iter) { + for (auto iter = services_map_.begin(); iter != services_map_.end(); ++iter) { iter->second = serving; } } -ServingStatus GetServingStatus(const grpc::string& service_name) const { +DefaultHealthCheckService::ServingStatus +DefaultHealthCheckService::GetServingStatus(const grpc::string& service_name) { std::lock_guard<std::mutex> lock(mu_); const auto& iter = services_map_.find(service_name); if (iter == services_map_.end()) { @@ -86,5 +89,3 @@ ServingStatus GetServingStatus(const grpc::string& service_name) const { } } // namespace grpc - -#endif // GRPC_INTERNAL_CPP_SERVER_DEFAULT_HEALTH_CHECK_SERVICE_H diff --git a/src/cpp/server/default_health_check_service.h b/src/cpp/server/default_health_check_service.h index a2545c50e7..23ee1cb7dc 100644 --- a/src/cpp/server/default_health_check_service.h +++ b/src/cpp/server/default_health_check_service.h @@ -37,29 +37,30 @@ #include <mutex> #include <grpc++/health_check_service_interface.h> -#include <grpc++/impl/codegen/service_types.h> +#include <grpc++/impl/codegen/service_type.h> +#include <grpc++/support/byte_buffer.h> namespace grpc { -class SyncHealthCheckServiceImpl : public Service { - public: - explicit SyncHealthCheckServiceImpl(DefaultHealthCheckService* service); - Status Check(ServerContext* context, const ByteBuffer* request, - ByteBuffer* response); - - private: - const DefaultHealthCheckService* service_; -}; - // Default implementation of HealthCheckServiceInterface. Server will create and // own it. class DefaultHealthCheckService : public HealthCheckServiceInterface { public: + class SyncHealthCheckServiceImpl : public Service { + public: + explicit SyncHealthCheckServiceImpl(DefaultHealthCheckService* service); + Status Check(ServerContext* context, const ByteBuffer* request, + ByteBuffer* response); + + private: + const DefaultHealthCheckService* service_; + }; + DefaultHealthCheckService(); void SetServingStatus(const grpc::string& service_name, bool serving) final; void SetServingStatus(bool serving) final; enum ServingStatus { NOT_FOUND, SERVING, NOT_SERVING }; - ServingStatus GetServingStatus(const grpc::string& service_name) const; + ServingStatus GetServingStatus(const grpc::string& service_name); SyncHealthCheckServiceImpl* GetSyncHealthCheckService() const { return sync_service_.get(); } diff --git a/src/cpp/server/health_check_service_server_builder_option.cc b/src/cpp/server/health_check_service_server_builder_option.cc index 80004b77fa..6680bed2e2 100644 --- a/src/cpp/server/health_check_service_server_builder_option.cc +++ b/src/cpp/server/health_check_service_server_builder_option.cc @@ -40,11 +40,11 @@ HealthCheckServiceServerBuilderOption::HealthCheckServiceServerBuilderOption( : hc_(std::move(hc)) {} // Hand over hc_ to the server. void HealthCheckServiceServerBuilderOption::UpdateArguments( - ChannelArguments* args) override { + ChannelArguments* args) { args->SetPointer(kDefaultHealthCheckServiceInterfaceArg, hc_.release()); } void HealthCheckServiceServerBuilderOption::UpdatePlugins( - std::vector<std::unique_ptr<ServerBuilderPlugin>>* plugins) override {} + std::vector<std::unique_ptr<ServerBuilderPlugin>>* plugins) {} } // namespace grpc diff --git a/src/cpp/server/server_cc.cc b/src/cpp/server/server_cc.cc index 03210883bf..4eaafeabb8 100644 --- a/src/cpp/server/server_cc.cc +++ b/src/cpp/server/server_cc.cc @@ -36,7 +36,6 @@ #include <utility> #include <grpc++/completion_queue.h> -#include <grpc++/ext/g.h> #include <grpc++/generic/async_generic_service.h> #include <grpc++/impl/codegen/completion_queue_tag.h> #include <grpc++/impl/grpc_library.h> @@ -307,15 +306,6 @@ class Server::SyncRequestThreadManager : public ThreadManager { sync_requests_.emplace_back(new SyncRequest(method, tag)); } - void AddHealthCheckSyncMethod() { - if (!sync_requests_.empty()) { - health_check_.reset( - new RpcServiceMethod("???", RpcMethod::NORMAL_RPC, new XXXHandler)); - sync_requests_.emplace_back( - new SyncRequest(health_check_.get(), nullptr)); - } - } - void AddUnknownSyncMethod() { if (!sync_requests_.empty()) { unknown_method_.reset(new RpcServiceMethod( @@ -390,10 +380,11 @@ Server::Server( for (size_t i = 0; i < channel_args.num_args; i++) { if (0 == strcmp(channel_args.args[i].key, kDefaultHealthCheckServiceInterfaceArg)) { - if (channel_args.args[i].value == nullptr) { - health_check_service_disabled_ = true; + if (channel_args.args[i].value.pointer.p == nullptr) { + health_check_service_disabled = true; } else { - health_check_service_.reset(channel_args.args[i].value); + health_check_service_.reset(static_cast<HealthCheckServiceInterface*>( + channel_args.args[i].value.pointer.p)); } break; } @@ -401,10 +392,12 @@ Server::Server( // Only create default health check service when user did not provide an // explicit one. if (health_check_service_ == nullptr && !health_check_service_disabled && - EnableDefaultHealthCheckService()) { - health_check_service_.reset(new DefaultHealthCheckService); + DefaultHealthCheckServiceEnabled()) { + auto* default_hc_service = new DefaultHealthCheckService; + health_check_service_.reset(default_hc_service); if (!sync_server_cqs->empty()) { // Has sync methods. - RegisterService(health_check_service_->GetSyncHealthCheckService()); + grpc::string host; + RegisterService(&host, default_hc_service->GetSyncHealthCheckService()); } } |