pull/9205/head
yang-g 8 years ago
parent 08137362d0
commit c9d2954e55
  1. 6
      BUILD
  2. 6
      CMakeLists.txt
  3. 6
      Makefile
  4. 2
      build.yaml
  5. 8
      include/grpc++/server.h
  6. 23
      src/cpp/server/default_health_check_service.cc
  7. 22
      src/cpp/server/default_health_check_service.h
  8. 50
      src/cpp/server/health_check_service_server_builder_option.cc
  9. 29
      src/cpp/server/server_cc.cc
  10. 2
      tools/doxygen/Doxyfile.c++.internal
  11. 2
      tools/run_tests/generated/sources_and_headers.json
  12. 4
      vsprojects/vcxproj/grpc++/grpc++.vcxproj
  13. 6
      vsprojects/vcxproj/grpc++/grpc++.vcxproj.filters
  14. 4
      vsprojects/vcxproj/grpc++_unsecure/grpc++_unsecure.vcxproj
  15. 6
      vsprojects/vcxproj/grpc++_unsecure/grpc++_unsecure.vcxproj.filters

@ -1397,7 +1397,6 @@ cc_library(
"src/cpp/common/channel_filter.cc",
"src/cpp/common/completion_queue_cc.cc",
"src/cpp/common/core_codegen.cc",
"src/cpp/common/health_check_service_server_builder_option.cc",
"src/cpp/common/resource_quota_cc.cc",
"src/cpp/common/rpc_method.cc",
"src/cpp/common/version_cc.cc",
@ -1406,6 +1405,7 @@ cc_library(
"src/cpp/server/default_health_check_service.cc",
"src/cpp/server/dynamic_thread_pool.cc",
"src/cpp/server/health_check_service.cc",
"src/cpp/server/health_check_service_server_builder_option.cc",
"src/cpp/server/server_builder.cc",
"src/cpp/server/server_cc.cc",
"src/cpp/server/server_context.cc",
@ -1693,7 +1693,6 @@ cc_library(
"src/cpp/common/channel_filter.cc",
"src/cpp/common/completion_queue_cc.cc",
"src/cpp/common/core_codegen.cc",
"src/cpp/common/health_check_service_server_builder_option.cc",
"src/cpp/common/resource_quota_cc.cc",
"src/cpp/common/rpc_method.cc",
"src/cpp/common/version_cc.cc",
@ -1702,6 +1701,7 @@ cc_library(
"src/cpp/server/default_health_check_service.cc",
"src/cpp/server/dynamic_thread_pool.cc",
"src/cpp/server/health_check_service.cc",
"src/cpp/server/health_check_service_server_builder_option.cc",
"src/cpp/server/server_builder.cc",
"src/cpp/server/server_cc.cc",
"src/cpp/server/server_context.cc",
@ -2047,7 +2047,6 @@ cc_library(
"src/cpp/common/channel_filter.cc",
"src/cpp/common/completion_queue_cc.cc",
"src/cpp/common/core_codegen.cc",
"src/cpp/common/health_check_service_server_builder_option.cc",
"src/cpp/common/resource_quota_cc.cc",
"src/cpp/common/rpc_method.cc",
"src/cpp/common/version_cc.cc",
@ -2056,6 +2055,7 @@ cc_library(
"src/cpp/server/default_health_check_service.cc",
"src/cpp/server/dynamic_thread_pool.cc",
"src/cpp/server/health_check_service.cc",
"src/cpp/server/health_check_service_server_builder_option.cc",
"src/cpp/server/server_builder.cc",
"src/cpp/server/server_cc.cc",
"src/cpp/server/server_context.cc",

@ -1085,7 +1085,6 @@ add_library(grpc++
src/cpp/common/channel_filter.cc
src/cpp/common/completion_queue_cc.cc
src/cpp/common/core_codegen.cc
src/cpp/common/health_check_service_server_builder_option.cc
src/cpp/common/resource_quota_cc.cc
src/cpp/common/rpc_method.cc
src/cpp/common/version_cc.cc
@ -1094,6 +1093,7 @@ add_library(grpc++
src/cpp/server/default_health_check_service.cc
src/cpp/server/dynamic_thread_pool.cc
src/cpp/server/health_check_service.cc
src/cpp/server/health_check_service_server_builder_option.cc
src/cpp/server/server_builder.cc
src/cpp/server/server_cc.cc
src/cpp/server/server_context.cc
@ -1248,7 +1248,6 @@ add_library(grpc++_cronet
src/cpp/common/channel_filter.cc
src/cpp/common/completion_queue_cc.cc
src/cpp/common/core_codegen.cc
src/cpp/common/health_check_service_server_builder_option.cc
src/cpp/common/resource_quota_cc.cc
src/cpp/common/rpc_method.cc
src/cpp/common/version_cc.cc
@ -1257,6 +1256,7 @@ add_library(grpc++_cronet
src/cpp/server/default_health_check_service.cc
src/cpp/server/dynamic_thread_pool.cc
src/cpp/server/health_check_service.cc
src/cpp/server/health_check_service_server_builder_option.cc
src/cpp/server/server_builder.cc
src/cpp/server/server_cc.cc
src/cpp/server/server_context.cc
@ -1634,7 +1634,6 @@ add_library(grpc++_unsecure
src/cpp/common/channel_filter.cc
src/cpp/common/completion_queue_cc.cc
src/cpp/common/core_codegen.cc
src/cpp/common/health_check_service_server_builder_option.cc
src/cpp/common/resource_quota_cc.cc
src/cpp/common/rpc_method.cc
src/cpp/common/version_cc.cc
@ -1643,6 +1642,7 @@ add_library(grpc++_unsecure
src/cpp/server/default_health_check_service.cc
src/cpp/server/dynamic_thread_pool.cc
src/cpp/server/health_check_service.cc
src/cpp/server/health_check_service_server_builder_option.cc
src/cpp/server/server_builder.cc
src/cpp/server/server_cc.cc
src/cpp/server/server_context.cc

@ -3779,7 +3779,6 @@ LIBGRPC++_SRC = \
src/cpp/common/channel_filter.cc \
src/cpp/common/completion_queue_cc.cc \
src/cpp/common/core_codegen.cc \
src/cpp/common/health_check_service_server_builder_option.cc \
src/cpp/common/resource_quota_cc.cc \
src/cpp/common/rpc_method.cc \
src/cpp/common/version_cc.cc \
@ -3788,6 +3787,7 @@ LIBGRPC++_SRC = \
src/cpp/server/default_health_check_service.cc \
src/cpp/server/dynamic_thread_pool.cc \
src/cpp/server/health_check_service.cc \
src/cpp/server/health_check_service_server_builder_option.cc \
src/cpp/server/server_builder.cc \
src/cpp/server/server_cc.cc \
src/cpp/server/server_context.cc \
@ -3971,7 +3971,6 @@ LIBGRPC++_CRONET_SRC = \
src/cpp/common/channel_filter.cc \
src/cpp/common/completion_queue_cc.cc \
src/cpp/common/core_codegen.cc \
src/cpp/common/health_check_service_server_builder_option.cc \
src/cpp/common/resource_quota_cc.cc \
src/cpp/common/rpc_method.cc \
src/cpp/common/version_cc.cc \
@ -3980,6 +3979,7 @@ LIBGRPC++_CRONET_SRC = \
src/cpp/server/default_health_check_service.cc \
src/cpp/server/dynamic_thread_pool.cc \
src/cpp/server/health_check_service.cc \
src/cpp/server/health_check_service_server_builder_option.cc \
src/cpp/server/server_builder.cc \
src/cpp/server/server_cc.cc \
src/cpp/server/server_context.cc \
@ -4684,7 +4684,6 @@ LIBGRPC++_UNSECURE_SRC = \
src/cpp/common/channel_filter.cc \
src/cpp/common/completion_queue_cc.cc \
src/cpp/common/core_codegen.cc \
src/cpp/common/health_check_service_server_builder_option.cc \
src/cpp/common/resource_quota_cc.cc \
src/cpp/common/rpc_method.cc \
src/cpp/common/version_cc.cc \
@ -4693,6 +4692,7 @@ LIBGRPC++_UNSECURE_SRC = \
src/cpp/server/default_health_check_service.cc \
src/cpp/server/dynamic_thread_pool.cc \
src/cpp/server/health_check_service.cc \
src/cpp/server/health_check_service_server_builder_option.cc \
src/cpp/server/server_builder.cc \
src/cpp/server/server_cc.cc \
src/cpp/server/server_context.cc \

@ -775,7 +775,6 @@ filegroups:
- src/cpp/common/channel_filter.cc
- src/cpp/common/completion_queue_cc.cc
- src/cpp/common/core_codegen.cc
- src/cpp/common/health_check_service_server_builder_option.cc
- src/cpp/common/resource_quota_cc.cc
- src/cpp/common/rpc_method.cc
- src/cpp/common/version_cc.cc
@ -784,6 +783,7 @@ filegroups:
- src/cpp/server/default_health_check_service.cc
- src/cpp/server/dynamic_thread_pool.cc
- src/cpp/server/health_check_service.cc
- src/cpp/server/health_check_service_server_builder_option.cc
- src/cpp/server/server_builder.cc
- src/cpp/server/server_cc.cc
- src/cpp/server/server_context.cc

@ -55,12 +55,10 @@ struct grpc_server;
namespace grpc {
class GenericServerContext;
class AsyncGenericService;
class ServerAsyncStreamingInterface;
class HealthCheckServiceInterface;
class ServerContext;
class ServerInitializer;
class ThreadPoolInterface;
/// Models a gRPC server.
///
@ -99,7 +97,7 @@ class Server final : public ServerInterface, private GrpcLibraryCodegen {
/// Returns the health check service.
HealthCheckServiceInterface* GetHealthCheckService() const {
return hc_.get();
return health_check_service_.get();
}
private:
@ -221,8 +219,6 @@ class Server final : public ServerInterface, private GrpcLibraryCodegen {
std::unique_ptr<ServerInitializer> server_initializer_;
std::unique_ptr<HealthCheckServiceInterface> health_check_service_;
// User explicitly disabled health check service.
bool health_check_service_disabled_;
};
} // namespace grpc

@ -34,6 +34,29 @@
#include "src/cpp/server/default_health_check_service.h"
namespace grpc {
namespace {
const char kHealthCheckMethodName[] = "/grpc.health.v1.Health/Check";
} // namespace
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);
}
Status SyncHealthCheckServiceImpl::Check(ServerContext* context,
const ByteBuffer* request,
ByteBuffer* response) {
// TODO nanopb
return Status::OK;
}
DefaultHealthCheckService::DefaultHealthCheckService() {
services_map_.insert("", true);

@ -37,21 +37,37 @@
#include <mutex>
#include <grpc++/health_check_service_interface.h>
#include <grpc++/impl/codegen/service_types.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:
DefaultHealthCheckService();
void SetServingStatus(const grpc::string& service_name,
bool serving) override;
void SetServingStatus(bool serving) override;
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;
SyncHealthCheckServiceImpl* GetSyncHealthCheckService() const {
return sync_service_.get();
}
private:
std::mutex mu_;
std::map<grpc::string, bool> services_map_;
std::unique_ptr<SyncHealthCheckServiceImpl> sync_service_;
};
} // namespace grpc

@ -0,0 +1,50 @@
/*
*
* Copyright 2016, Google Inc.
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are
* met:
*
* * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* * Redistributions in binary form must reproduce the above
* copyright notice, this list of conditions and the following disclaimer
* in the documentation and/or other materials provided with the
* distribution.
* * Neither the name of Google Inc. nor the names of its
* contributors may be used to endorse or promote products derived from
* this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
* OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
*/
#include <grpc++/ext/health_check_service_server_builder_option.h>
namespace grpc {
HealthCheckServiceServerBuilderOption::HealthCheckServiceServerBuilderOption(
std::unique_ptr<HealthCheckServiceInterface> hc)
: hc_(std::move(hc)) {}
// Hand over hc_ to the server.
void HealthCheckServiceServerBuilderOption::UpdateArguments(
ChannelArguments* args) override {
args->SetPointer(kDefaultHealthCheckServiceInterfaceArg, hc_.release());
}
void HealthCheckServiceServerBuilderOption::UpdatePlugins(
std::vector<std::unique_ptr<ServerBuilderPlugin>>* plugins) override {}
} // namespace grpc

@ -370,8 +370,7 @@ Server::Server(
shutdown_notified_(false),
has_generic_service_(false),
server_(nullptr),
server_initializer_(new ServerInitializer(this)),
health_check_service_disabled_(false) {
server_initializer_(new ServerInitializer(this)) {
g_gli_initializer.summon();
gpr_once_init(&g_once_init_callbacks, InitGlobalCallbacks);
global_callbacks_ = g_callbacks;
@ -387,6 +386,7 @@ Server::Server(
grpc_channel_args channel_args;
args->SetChannelArgs(&channel_args);
bool health_check_service_disabled = false;
for (size_t i = 0; i < channel_args.num_args; i++) {
if (0 == strcmp(channel_args.args[i].key,
kDefaultHealthCheckServiceInterfaceArg)) {
@ -398,6 +398,15 @@ Server::Server(
break;
}
}
// 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);
if (!sync_server_cqs->empty()) { // Has sync methods.
RegisterService(health_check_service_->GetSyncHealthCheckService());
}
}
server_ = grpc_server_create(&channel_args, nullptr);
}
@ -506,22 +515,6 @@ bool Server::Start(ServerCompletionQueue** cqs, size_t num_cqs) {
started_ = true;
grpc_server_start(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);
for (auto it = sync_req_mgrs_.begin(); it != sync_req_mgrs_.end(); it++) {
(*it)->AddHealthCheckSyncMethod();
}
for (size_t i = 0; i < num_cqs; i++) {
if (cqs[i]->IsFrequentlyPolled()) {
// new UnimplementedAsyncRequest(this, cqs[i]);
}
}
}
if (!has_generic_service_) {
for (auto it = sync_req_mgrs_.begin(); it != sync_req_mgrs_.end(); it++) {
(*it)->AddUnknownSyncMethod();

@ -878,7 +878,6 @@ src/cpp/common/channel_arguments.cc \
src/cpp/common/channel_filter.cc \
src/cpp/common/completion_queue_cc.cc \
src/cpp/common/core_codegen.cc \
src/cpp/common/health_check_service_server_builder_option.cc \
src/cpp/common/resource_quota_cc.cc \
src/cpp/common/rpc_method.cc \
src/cpp/common/version_cc.cc \
@ -887,6 +886,7 @@ src/cpp/server/create_default_thread_pool.cc \
src/cpp/server/default_health_check_service.cc \
src/cpp/server/dynamic_thread_pool.cc \
src/cpp/server/health_check_service.cc \
src/cpp/server/health_check_service_server_builder_option.cc \
src/cpp/server/server_builder.cc \
src/cpp/server/server_cc.cc \
src/cpp/server/server_context.cc \

@ -7724,7 +7724,6 @@
"src/cpp/common/channel_filter.h",
"src/cpp/common/completion_queue_cc.cc",
"src/cpp/common/core_codegen.cc",
"src/cpp/common/health_check_service_server_builder_option.cc",
"src/cpp/common/resource_quota_cc.cc",
"src/cpp/common/rpc_method.cc",
"src/cpp/common/version_cc.cc",
@ -7735,6 +7734,7 @@
"src/cpp/server/dynamic_thread_pool.cc",
"src/cpp/server/dynamic_thread_pool.h",
"src/cpp/server/health_check_service.cc",
"src/cpp/server/health_check_service_server_builder_option.cc",
"src/cpp/server/server_builder.cc",
"src/cpp/server/server_cc.cc",
"src/cpp/server/server_context.cc",

@ -399,8 +399,6 @@
</ClCompile>
<ClCompile Include="$(SolutionDir)\..\src\cpp\common\core_codegen.cc">
</ClCompile>
<ClCompile Include="$(SolutionDir)\..\src\cpp\common\health_check_service_server_builder_option.cc">
</ClCompile>
<ClCompile Include="$(SolutionDir)\..\src\cpp\common\resource_quota_cc.cc">
</ClCompile>
<ClCompile Include="$(SolutionDir)\..\src\cpp\common\rpc_method.cc">
@ -417,6 +415,8 @@
</ClCompile>
<ClCompile Include="$(SolutionDir)\..\src\cpp\server\health_check_service.cc">
</ClCompile>
<ClCompile Include="$(SolutionDir)\..\src\cpp\server\health_check_service_server_builder_option.cc">
</ClCompile>
<ClCompile Include="$(SolutionDir)\..\src\cpp\server\server_builder.cc">
</ClCompile>
<ClCompile Include="$(SolutionDir)\..\src\cpp\server\server_cc.cc">

@ -58,9 +58,6 @@
<ClCompile Include="$(SolutionDir)\..\src\cpp\common\core_codegen.cc">
<Filter>src\cpp\common</Filter>
</ClCompile>
<ClCompile Include="$(SolutionDir)\..\src\cpp\common\health_check_service_server_builder_option.cc">
<Filter>src\cpp\common</Filter>
</ClCompile>
<ClCompile Include="$(SolutionDir)\..\src\cpp\common\resource_quota_cc.cc">
<Filter>src\cpp\common</Filter>
</ClCompile>
@ -85,6 +82,9 @@
<ClCompile Include="$(SolutionDir)\..\src\cpp\server\health_check_service.cc">
<Filter>src\cpp\server</Filter>
</ClCompile>
<ClCompile Include="$(SolutionDir)\..\src\cpp\server\health_check_service_server_builder_option.cc">
<Filter>src\cpp\server</Filter>
</ClCompile>
<ClCompile Include="$(SolutionDir)\..\src\cpp\server\server_builder.cc">
<Filter>src\cpp\server</Filter>
</ClCompile>

@ -385,8 +385,6 @@
</ClCompile>
<ClCompile Include="$(SolutionDir)\..\src\cpp\common\core_codegen.cc">
</ClCompile>
<ClCompile Include="$(SolutionDir)\..\src\cpp\common\health_check_service_server_builder_option.cc">
</ClCompile>
<ClCompile Include="$(SolutionDir)\..\src\cpp\common\resource_quota_cc.cc">
</ClCompile>
<ClCompile Include="$(SolutionDir)\..\src\cpp\common\rpc_method.cc">
@ -403,6 +401,8 @@
</ClCompile>
<ClCompile Include="$(SolutionDir)\..\src\cpp\server\health_check_service.cc">
</ClCompile>
<ClCompile Include="$(SolutionDir)\..\src\cpp\server\health_check_service_server_builder_option.cc">
</ClCompile>
<ClCompile Include="$(SolutionDir)\..\src\cpp\server\server_builder.cc">
</ClCompile>
<ClCompile Include="$(SolutionDir)\..\src\cpp\server\server_cc.cc">

@ -43,9 +43,6 @@
<ClCompile Include="$(SolutionDir)\..\src\cpp\common\core_codegen.cc">
<Filter>src\cpp\common</Filter>
</ClCompile>
<ClCompile Include="$(SolutionDir)\..\src\cpp\common\health_check_service_server_builder_option.cc">
<Filter>src\cpp\common</Filter>
</ClCompile>
<ClCompile Include="$(SolutionDir)\..\src\cpp\common\resource_quota_cc.cc">
<Filter>src\cpp\common</Filter>
</ClCompile>
@ -70,6 +67,9 @@
<ClCompile Include="$(SolutionDir)\..\src\cpp\server\health_check_service.cc">
<Filter>src\cpp\server</Filter>
</ClCompile>
<ClCompile Include="$(SolutionDir)\..\src\cpp\server\health_check_service_server_builder_option.cc">
<Filter>src\cpp\server</Filter>
</ClCompile>
<ClCompile Include="$(SolutionDir)\..\src\cpp\server\server_builder.cc">
<Filter>src\cpp\server</Filter>
</ClCompile>

Loading…
Cancel
Save