aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorGravatar yang-g <yangg@google.com>2015-07-07 17:47:31 -0700
committerGravatar yang-g <yangg@google.com>2015-07-07 17:47:31 -0700
commit85c04f938f242031cf819f626da21ac597ccd6a6 (patch)
treed351513c484ed6f2df9c7b880ae286f1badf0e99
parente114a017203b1f42257154bf23e764b215176eff (diff)
resolve comments
-rw-r--r--BUILD1
-rw-r--r--build.json3
-rw-r--r--include/grpc++/client_context.h3
-rw-r--r--include/grpc++/server_context.h7
-rw-r--r--src/cpp/client/client_context.cc7
-rw-r--r--src/cpp/common/insecure_auth_context.h59
-rw-r--r--src/cpp/common/insecure_create_auth_context.cc5
-rw-r--r--src/cpp/common/secure_auth_context.h2
-rw-r--r--src/cpp/common/secure_create_auth_context.cc11
-rw-r--r--src/cpp/server/server.cc4
-rw-r--r--src/cpp/server/server_context.cc5
-rw-r--r--test/cpp/end2end/end2end_test.cc2
-rw-r--r--tools/run_tests/sources_and_headers.json2
-rw-r--r--vsprojects/grpc++_unsecure/grpc++_unsecure.vcxproj1
-rw-r--r--vsprojects/grpc++_unsecure/grpc++_unsecure.vcxproj.filters3
15 files changed, 28 insertions, 87 deletions
diff --git a/BUILD b/BUILD
index b1b2ce3134..884b168660 100644
--- a/BUILD
+++ b/BUILD
@@ -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>