aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--src/cpp/server/default_health_check_service.cc29
-rw-r--r--src/cpp/server/default_health_check_service.h25
-rw-r--r--src/cpp/server/health_check_service_server_builder_option.cc4
-rw-r--r--src/cpp/server/server_cc.cc25
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());
}
}