diff options
author | yang-g <yangg@google.com> | 2015-07-14 14:25:37 -0700 |
---|---|---|
committer | yang-g <yangg@google.com> | 2015-07-14 14:25:37 -0700 |
commit | 94d6225ae7fa587f787fcbfdbd3ab8a365d1bb04 (patch) | |
tree | 9c0be81fb69e84290dfe58d48aea88f165726612 | |
parent | 1cbeeb508b033c84f73ec79756bb4f7c0227a0d0 (diff) |
Create server side auth context lazily
-rw-r--r-- | include/grpc++/server_context.h | 6 | ||||
-rw-r--r-- | src/cpp/server/server_context.cc | 7 |
2 files changed, 9 insertions, 4 deletions
diff --git a/include/grpc++/server_context.h b/include/grpc++/server_context.h index a4ee986df1..2123d03291 100644 --- a/include/grpc++/server_context.h +++ b/include/grpc++/server_context.h @@ -99,9 +99,7 @@ class ServerContext { return client_metadata_; } - std::shared_ptr<const AuthContext> auth_context() const { - return auth_context_; - } + std::shared_ptr<const AuthContext> auth_context() const; private: friend class ::grpc::Server; @@ -147,7 +145,7 @@ class ServerContext { grpc_call* call_; CompletionQueue* cq_; bool sent_initial_metadata_; - std::shared_ptr<const AuthContext> auth_context_; + mutable 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/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 |