diff options
author | 2015-07-07 17:47:31 -0700 | |
---|---|---|
committer | 2015-07-07 17:47:31 -0700 | |
commit | 85c04f938f242031cf819f626da21ac597ccd6a6 (patch) | |
tree | d351513c484ed6f2df9c7b880ae286f1badf0e99 | |
parent | e114a017203b1f42257154bf23e764b215176eff (diff) |
resolve comments
-rw-r--r-- | BUILD | 1 | ||||
-rw-r--r-- | build.json | 3 | ||||
-rw-r--r-- | include/grpc++/client_context.h | 3 | ||||
-rw-r--r-- | include/grpc++/server_context.h | 7 | ||||
-rw-r--r-- | src/cpp/client/client_context.cc | 7 | ||||
-rw-r--r-- | src/cpp/common/insecure_auth_context.h | 59 | ||||
-rw-r--r-- | src/cpp/common/insecure_create_auth_context.cc | 5 | ||||
-rw-r--r-- | src/cpp/common/secure_auth_context.h | 2 | ||||
-rw-r--r-- | src/cpp/common/secure_create_auth_context.cc | 11 | ||||
-rw-r--r-- | src/cpp/server/server.cc | 4 | ||||
-rw-r--r-- | src/cpp/server/server_context.cc | 5 | ||||
-rw-r--r-- | test/cpp/end2end/end2end_test.cc | 2 | ||||
-rw-r--r-- | tools/run_tests/sources_and_headers.json | 2 | ||||
-rw-r--r-- | vsprojects/grpc++_unsecure/grpc++_unsecure.vcxproj | 1 | ||||
-rw-r--r-- | vsprojects/grpc++_unsecure/grpc++_unsecure.vcxproj.filters | 3 |
15 files changed, 28 insertions, 87 deletions
@@ -717,7 +717,6 @@ cc_library( cc_library( name = "grpc++_unsecure", srcs = [ - "src/cpp/common/insecure_auth_context.h", "src/cpp/client/channel.h", "src/cpp/common/create_auth_context.h", "src/cpp/server/thread_pool.h", diff --git a/build.json b/build.json index 4daf6128e5..e3268620d6 100644 --- a/build.json +++ b/build.json @@ -619,9 +619,6 @@ "name": "grpc++_unsecure", "build": "all", "language": "c++", - "headers": [ - "src/cpp/common/insecure_auth_context.h" - ], "src": [ "src/cpp/common/insecure_create_auth_context.cc" ], diff --git a/include/grpc++/client_context.h b/include/grpc++/client_context.h index 3bf5edc6c0..26bd7c830f 100644 --- a/include/grpc++/client_context.h +++ b/include/grpc++/client_context.h @@ -108,7 +108,7 @@ class ClientContext { creds_ = creds; } - std::unique_ptr<const AuthContext> auth_context() const; + std::shared_ptr<const AuthContext> auth_context() const; void TryCancel(); @@ -157,6 +157,7 @@ class ClientContext { gpr_timespec deadline_; grpc::string authority_; std::shared_ptr<Credentials> creds_; + mutable std::shared_ptr<const AuthContext> auth_context_; std::multimap<grpc::string, grpc::string> send_initial_metadata_; std::multimap<grpc::string, grpc::string> recv_initial_metadata_; std::multimap<grpc::string, grpc::string> trailing_metadata_; diff --git a/include/grpc++/server_context.h b/include/grpc++/server_context.h index 3bf21e02bf..a4ee986df1 100644 --- a/include/grpc++/server_context.h +++ b/include/grpc++/server_context.h @@ -99,7 +99,9 @@ class ServerContext { return client_metadata_; } - std::unique_ptr<const AuthContext> auth_context() const; + std::shared_ptr<const AuthContext> auth_context() const { + return auth_context_; + } private: friend class ::grpc::Server; @@ -137,12 +139,15 @@ class ServerContext { ServerContext(gpr_timespec deadline, grpc_metadata* metadata, size_t metadata_count); + void set_call(grpc_call* call); + CompletionOp* completion_op_; gpr_timespec deadline_; grpc_call* call_; CompletionQueue* cq_; bool sent_initial_metadata_; + std::shared_ptr<const AuthContext> auth_context_; std::multimap<grpc::string, grpc::string> client_metadata_; std::multimap<grpc::string, grpc::string> initial_metadata_; std::multimap<grpc::string, grpc::string> trailing_metadata_; diff --git a/src/cpp/client/client_context.cc b/src/cpp/client/client_context.cc index ac154d557a..c68f6dd9f8 100644 --- a/src/cpp/client/client_context.cc +++ b/src/cpp/client/client_context.cc @@ -76,8 +76,11 @@ void ClientContext::set_call(grpc_call* call, } } -std::unique_ptr<const AuthContext> ClientContext::auth_context() const { - return CreateAuthContext(call_); +std::shared_ptr<const AuthContext> ClientContext::auth_context() const { + if (auth_context_.get() == nullptr) { + auth_context_ = CreateAuthContext(call_); + } + return auth_context_; } void ClientContext::TryCancel() { diff --git a/src/cpp/common/insecure_auth_context.h b/src/cpp/common/insecure_auth_context.h deleted file mode 100644 index 8d1653a477..0000000000 --- a/src/cpp/common/insecure_auth_context.h +++ /dev/null @@ -1,59 +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_COMMON_INSECURE_AUTH_CONTEXT_H -#define GRPC_INTERNAL_CPP_COMMON_INSECURE_AUTH_CONTEXT_H - -#include <grpc++/auth_context.h> - -namespace grpc { - -class InsecureAuthContext : public AuthContext { - public: - ~InsecureAuthContext() GRPC_OVERRIDE {} - - std::vector<grpc::string> GetPeerIdentity() const GRPC_OVERRIDE { - return std::vector<grpc::string>(); - } - - grpc::string GetPeerIdentityPropertyName() const GRPC_OVERRIDE { return ""; } - - std::vector<grpc::string> FindPropertyValues(const grpc::string& name) const - GRPC_OVERRIDE { - return std::vector<grpc::string>(); - } -}; - -} // namespace grpc - -#endif // GRPC_INTERNAL_CPP_COMMON_INSECURE_AUTH_CONTEXT_H diff --git a/src/cpp/common/insecure_create_auth_context.cc b/src/cpp/common/insecure_create_auth_context.cc index 79d868254d..07fc0bd549 100644 --- a/src/cpp/common/insecure_create_auth_context.cc +++ b/src/cpp/common/insecure_create_auth_context.cc @@ -34,13 +34,12 @@ #include <grpc/grpc.h> #include <grpc++/auth_context.h> -#include "src/cpp/common/insecure_auth_context.h" namespace grpc { -std::unique_ptr<const AuthContext> CreateAuthContext(grpc_call* call) { +std::shared_ptr<const AuthContext> CreateAuthContext(grpc_call* call) { (void)call; - return std::unique_ptr<const AuthContext>(new InsecureAuthContext); + return std::shared_ptr<const AuthContext>(); } } // namespace grpc diff --git a/src/cpp/common/secure_auth_context.h b/src/cpp/common/secure_auth_context.h index 892f8d522c..b406f675ae 100644 --- a/src/cpp/common/secure_auth_context.h +++ b/src/cpp/common/secure_auth_context.h @@ -39,7 +39,7 @@ namespace grpc { -class SecureAuthContext : public AuthContext { +class SecureAuthContext GRPC_FINAL : public AuthContext { public: SecureAuthContext(grpc_auth_context* ctx); diff --git a/src/cpp/common/secure_create_auth_context.cc b/src/cpp/common/secure_create_auth_context.cc index d9fba4f4d4..21994945f8 100644 --- a/src/cpp/common/secure_create_auth_context.cc +++ b/src/cpp/common/secure_create_auth_context.cc @@ -39,12 +39,13 @@ namespace grpc { -std::unique_ptr<const AuthContext> CreateAuthContext(grpc_call* call) { - grpc_auth_context* context = nullptr; - if (call) { - context = const_cast<grpc_auth_context*>(grpc_call_auth_context(call)); +std::shared_ptr<const AuthContext> CreateAuthContext(grpc_call* call) { + if (call == nullptr) { + return std::shared_ptr<const AuthContext>(); } - return std::unique_ptr<const AuthContext>(new SecureAuthContext(context)); + grpc_auth_context* context = + const_cast<grpc_auth_context*>(grpc_call_auth_context(call)); + return std::shared_ptr<const AuthContext>(new SecureAuthContext(context)); } } // namespace grpc diff --git a/src/cpp/server/server.cc b/src/cpp/server/server.cc index 1437b2dea7..033c18490b 100644 --- a/src/cpp/server/server.cc +++ b/src/cpp/server/server.cc @@ -118,7 +118,7 @@ class Server::SyncRequest GRPC_FINAL : public CompletionQueueTag { has_request_payload_(mrd->has_request_payload_), request_payload_(mrd->request_payload_), method_(mrd->method_) { - ctx_.call_ = mrd->call_; + ctx_.set_call(mrd->call_); ctx_.cq_ = &cq_; GPR_ASSERT(mrd->in_flight_); mrd->in_flight_ = false; @@ -325,7 +325,7 @@ bool Server::BaseAsyncRequest::FinalizeResult(void** tag, bool* status) { } } grpc_metadata_array_destroy(&initial_metadata_array_); - context_->call_ = call_; + context_->set_call(call_); context_->cq_ = call_cq_; Call call(call_, server_, call_cq_, server_->max_message_size_); if (*status && call_) { diff --git a/src/cpp/server/server_context.cc b/src/cpp/server/server_context.cc index 357d1a5a02..1bb3a8bcc4 100644 --- a/src/cpp/server/server_context.cc +++ b/src/cpp/server/server_context.cc @@ -148,8 +148,9 @@ bool ServerContext::IsCancelled() { return completion_op_ && completion_op_->CheckCancelled(cq_); } -std::unique_ptr<const AuthContext> ServerContext::auth_context() const { - return CreateAuthContext(call_); +void ServerContext::set_call(grpc_call* call) { + call_ = call; + auth_context_ = CreateAuthContext(call); } } // namespace grpc diff --git a/test/cpp/end2end/end2end_test.cc b/test/cpp/end2end/end2end_test.cc index d626fc0c94..60af84100a 100644 --- a/test/cpp/end2end/end2end_test.cc +++ b/test/cpp/end2end/end2end_test.cc @@ -85,7 +85,7 @@ void MaybeEchoDeadline(ServerContext* context, const EchoRequest* request, template <typename T> void CheckAuthContext(T* context) { - std::unique_ptr<const AuthContext> auth_ctx = context->auth_context(); + std::shared_ptr<const AuthContext> auth_ctx = context->auth_context(); std::vector<grpc::string> fake = auth_ctx->FindPropertyValues("transport_security_type"); EXPECT_EQ(1, fake.size()); diff --git a/tools/run_tests/sources_and_headers.json b/tools/run_tests/sources_and_headers.json index 795f1f46a8..344933a67c 100644 --- a/tools/run_tests/sources_and_headers.json +++ b/tools/run_tests/sources_and_headers.json @@ -9666,7 +9666,6 @@ "include/grpc++/time.h", "src/cpp/client/channel.h", "src/cpp/common/create_auth_context.h", - "src/cpp/common/insecure_auth_context.h", "src/cpp/server/thread_pool.h" ], "language": "c++", @@ -9722,7 +9721,6 @@ "src/cpp/common/call.cc", "src/cpp/common/completion_queue.cc", "src/cpp/common/create_auth_context.h", - "src/cpp/common/insecure_auth_context.h", "src/cpp/common/insecure_create_auth_context.cc", "src/cpp/common/rpc_method.cc", "src/cpp/proto/proto_utils.cc", diff --git a/vsprojects/grpc++_unsecure/grpc++_unsecure.vcxproj b/vsprojects/grpc++_unsecure/grpc++_unsecure.vcxproj index 984fb6884e..944e7e0001 100644 --- a/vsprojects/grpc++_unsecure/grpc++_unsecure.vcxproj +++ b/vsprojects/grpc++_unsecure/grpc++_unsecure.vcxproj @@ -186,7 +186,6 @@ <ClInclude Include="..\..\include\grpc++\time.h" /> </ItemGroup> <ItemGroup> - <ClInclude Include="..\..\src\cpp\common\insecure_auth_context.h" /> <ClInclude Include="..\..\src\cpp\client\channel.h" /> <ClInclude Include="..\..\src\cpp\common\create_auth_context.h" /> <ClInclude Include="..\..\src\cpp\server\thread_pool.h" /> diff --git a/vsprojects/grpc++_unsecure/grpc++_unsecure.vcxproj.filters b/vsprojects/grpc++_unsecure/grpc++_unsecure.vcxproj.filters index ae348d3fb5..73b0a5dccd 100644 --- a/vsprojects/grpc++_unsecure/grpc++_unsecure.vcxproj.filters +++ b/vsprojects/grpc++_unsecure/grpc++_unsecure.vcxproj.filters @@ -194,9 +194,6 @@ </ClInclude> </ItemGroup> <ItemGroup> - <ClInclude Include="..\..\src\cpp\common\insecure_auth_context.h"> - <Filter>src\cpp\common</Filter> - </ClInclude> <ClInclude Include="..\..\src\cpp\client\channel.h"> <Filter>src\cpp\client</Filter> </ClInclude> |