diff options
author | yang-g <yangg@google.com> | 2015-07-16 21:03:49 -0700 |
---|---|---|
committer | yang-g <yangg@google.com> | 2015-07-16 21:03:49 -0700 |
commit | fb58d239ef360b4fcdeeda358e46bb107ceceaa4 (patch) | |
tree | 5768a672fc92eacf5c4a573b3d52c1b3723bc738 /src/cpp | |
parent | 7ef7232dd9eba4be7d81b59a6bb59c4fd634ea08 (diff) | |
parent | 65ef0fffaecf8396cb93b3a76416d099f7b07438 (diff) |
Merge with head
Diffstat (limited to 'src/cpp')
-rw-r--r-- | src/cpp/server/async_server_context.cc | 99 | ||||
-rw-r--r-- | src/cpp/server/create_default_thread_pool.cc | 4 | ||||
-rw-r--r-- | src/cpp/server/fixed_size_thread_pool.cc (renamed from src/cpp/server/thread_pool.cc) | 15 | ||||
-rw-r--r-- | src/cpp/server/server_builder.cc | 2 | ||||
-rw-r--r-- | src/cpp/server/server_context.cc | 7 | ||||
-rw-r--r-- | src/cpp/server/thread_pool.h | 69 |
6 files changed, 18 insertions, 178 deletions
diff --git a/src/cpp/server/async_server_context.cc b/src/cpp/server/async_server_context.cc deleted file mode 100644 index e1f29452a4..0000000000 --- a/src/cpp/server/async_server_context.cc +++ /dev/null @@ -1,99 +0,0 @@ -/* - * - * Copyright 2015, 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++/async_server_context.h> - -#include <grpc/grpc.h> -#include <grpc/support/log.h> -#include "src/cpp/proto/proto_utils.h" -#include <grpc++/config.h> -#include <grpc++/status.h> - -namespace grpc { - -AsyncServerContext::AsyncServerContext( - grpc_call* call, const grpc::string& method, const grpc::string& host, - system_clock::time_point absolute_deadline) - : method_(method), - host_(host), - absolute_deadline_(absolute_deadline), - request_(nullptr), - call_(call) {} - -AsyncServerContext::~AsyncServerContext() { grpc_call_destroy(call_); } - -void AsyncServerContext::Accept(grpc_completion_queue* cq) { - GPR_ASSERT(grpc_call_server_accept_old(call_, cq, this) == GRPC_CALL_OK); - GPR_ASSERT(grpc_call_server_end_initial_metadata_old( - call_, GRPC_WRITE_BUFFER_HINT) == GRPC_CALL_OK); -} - -bool AsyncServerContext::StartRead(grpc::protobuf::Message* request) { - GPR_ASSERT(request); - request_ = request; - grpc_call_error err = grpc_call_start_read_old(call_, this); - return err == GRPC_CALL_OK; -} - -bool AsyncServerContext::StartWrite(const grpc::protobuf::Message& response, - int flags) { - grpc_byte_buffer* buffer = nullptr; - GRPC_TIMER_MARK(SER_PROTO_BEGIN, call_->call()); - if (!SerializeProto(response, &buffer)) { - return false; - } - GRPC_TIMER_MARK(SER_PROTO_END, call_->call()); - grpc_call_error err = grpc_call_start_write_old(call_, buffer, this, flags); - grpc_byte_buffer_destroy(buffer); - return err == GRPC_CALL_OK; -} - -bool AsyncServerContext::StartWriteStatus(const Status& status) { - grpc_call_error err = grpc_call_start_write_status_old( - call_, static_cast<grpc_status_code>(status.code()), - status.details().empty() ? nullptr - : const_cast<char*>(status.details().c_str()), - this); - return err == GRPC_CALL_OK; -} - -bool AsyncServerContext::ParseRead(grpc_byte_buffer* read_buffer) { - GPR_ASSERT(request_); - GRPC_TIMER_MARK(DESER_PROTO_BEGIN, call_->call()); - bool success = DeserializeProto(read_buffer, request_); - GRPC_TIMER_MARK(DESER_PROTO_END, call_->call()); - request_ = nullptr; - return success; -} - -} // namespace grpc diff --git a/src/cpp/server/create_default_thread_pool.cc b/src/cpp/server/create_default_thread_pool.cc index 89c1d7e929..cc182f59f4 100644 --- a/src/cpp/server/create_default_thread_pool.cc +++ b/src/cpp/server/create_default_thread_pool.cc @@ -32,7 +32,7 @@ */ #include <grpc/support/cpu.h> -#include "src/cpp/server/thread_pool.h" +#include <grpc++/fixed_size_thread_pool.h> #ifndef GRPC_CUSTOM_DEFAULT_THREAD_POOL @@ -41,7 +41,7 @@ namespace grpc { ThreadPoolInterface* CreateDefaultThreadPool() { int cores = gpr_cpu_num_cores(); if (!cores) cores = 4; - return new ThreadPool(cores); + return new FixedSizeThreadPool(cores); } } // namespace grpc diff --git a/src/cpp/server/thread_pool.cc b/src/cpp/server/fixed_size_thread_pool.cc index 118cabcb61..710bcbb573 100644 --- a/src/cpp/server/thread_pool.cc +++ b/src/cpp/server/fixed_size_thread_pool.cc @@ -33,12 +33,11 @@ #include <grpc++/impl/sync.h> #include <grpc++/impl/thd.h> - -#include "src/cpp/server/thread_pool.h" +#include <grpc++/fixed_size_thread_pool.h> namespace grpc { -void ThreadPool::ThreadFunc() { +void FixedSizeThreadPool::ThreadFunc() { for (;;) { // Wait until work is available or we are shutting down. grpc::unique_lock<grpc::mutex> lock(mu_); @@ -58,13 +57,14 @@ void ThreadPool::ThreadFunc() { } } -ThreadPool::ThreadPool(int num_threads) : shutdown_(false) { +FixedSizeThreadPool::FixedSizeThreadPool(int num_threads) : shutdown_(false) { for (int i = 0; i < num_threads; i++) { - threads_.push_back(new grpc::thread(&ThreadPool::ThreadFunc, this)); + threads_.push_back( + new grpc::thread(&FixedSizeThreadPool::ThreadFunc, this)); } } -ThreadPool::~ThreadPool() { +FixedSizeThreadPool::~FixedSizeThreadPool() { { grpc::lock_guard<grpc::mutex> lock(mu_); shutdown_ = true; @@ -76,7 +76,8 @@ ThreadPool::~ThreadPool() { } } -void ThreadPool::ScheduleCallback(const std::function<void()>& callback) { +void FixedSizeThreadPool::ScheduleCallback( + const std::function<void()>& callback) { grpc::lock_guard<grpc::mutex> lock(mu_); callbacks_.push(callback); cv_.notify_one(); diff --git a/src/cpp/server/server_builder.cc b/src/cpp/server/server_builder.cc index 86c78f05ff..f723d4611a 100644 --- a/src/cpp/server/server_builder.cc +++ b/src/cpp/server/server_builder.cc @@ -37,7 +37,7 @@ #include <grpc/support/log.h> #include <grpc++/impl/service_type.h> #include <grpc++/server.h> -#include "src/cpp/server/thread_pool.h" +#include <grpc++/thread_pool_interface.h> namespace grpc { diff --git a/src/cpp/server/server_context.cc b/src/cpp/server/server_context.cc index 1bb3a8bcc4..0be77138d1 100644 --- a/src/cpp/server/server_context.cc +++ b/src/cpp/server/server_context.cc @@ -153,4 +153,11 @@ void ServerContext::set_call(grpc_call* call) { auth_context_ = CreateAuthContext(call); } +std::shared_ptr<const AuthContext> ServerContext::auth_context() const { + if (auth_context_.get() == nullptr) { + auth_context_ = CreateAuthContext(call_); + } + return auth_context_; +} + } // namespace grpc diff --git a/src/cpp/server/thread_pool.h b/src/cpp/server/thread_pool.h deleted file mode 100644 index 3b70249bf9..0000000000 --- a/src/cpp/server/thread_pool.h +++ /dev/null @@ -1,69 +0,0 @@ -/* - * - * Copyright 2015, 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. - * - */ - -#ifndef GRPC_INTERNAL_CPP_SERVER_THREAD_POOL_H -#define GRPC_INTERNAL_CPP_SERVER_THREAD_POOL_H - -#include <grpc++/config.h> - -#include <grpc++/impl/sync.h> -#include <grpc++/impl/thd.h> -#include <grpc++/thread_pool_interface.h> - -#include <queue> -#include <vector> - -namespace grpc { - -class ThreadPool GRPC_FINAL : public ThreadPoolInterface { - public: - explicit ThreadPool(int num_threads); - ~ThreadPool(); - - void ScheduleCallback(const std::function<void()>& callback) GRPC_OVERRIDE; - - private: - grpc::mutex mu_; - grpc::condition_variable cv_; - bool shutdown_; - std::queue<std::function<void()>> callbacks_; - std::vector<grpc::thread*> threads_; - - void ThreadFunc(); -}; - -ThreadPoolInterface* CreateDefaultThreadPool(); - -} // namespace grpc - -#endif // GRPC_INTERNAL_CPP_SERVER_THREAD_POOL_H |