diff options
author | Nicolas Noble <nicolasnoble@users.noreply.github.com> | 2015-07-09 19:17:59 -0700 |
---|---|---|
committer | Nicolas Noble <nicolasnoble@users.noreply.github.com> | 2015-07-09 19:17:59 -0700 |
commit | 87570f4113c8047a29bc23a311e5d07ce62db8e7 (patch) | |
tree | f5150cebac26d66e28f1d230c011b15747a8cb99 /include/grpc++ | |
parent | 6b7153cc0ded7d56dcb43ca53e925e47f678f5d5 (diff) | |
parent | 69cb6b41c895e9d0236f0f8c3ec982e9e1697aa2 (diff) |
Merge pull request #2360 from jboeuf/cpp_auth_context_in_0_10
Backport of pull request #2313 into release-0_10.
Diffstat (limited to 'include/grpc++')
-rw-r--r-- | include/grpc++/auth_context.h | 62 | ||||
-rw-r--r-- | include/grpc++/client_context.h | 4 | ||||
-rw-r--r-- | include/grpc++/server_context.h | 9 |
3 files changed, 75 insertions, 0 deletions
diff --git a/include/grpc++/auth_context.h b/include/grpc++/auth_context.h new file mode 100644 index 0000000000..158f8e3f07 --- /dev/null +++ b/include/grpc++/auth_context.h @@ -0,0 +1,62 @@ +/* + * + * 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 GRPCXX_AUTH_CONTEXT_H +#define GRPCXX_AUTH_CONTEXT_H + +#include <vector> + +#include <grpc++/config.h> + +namespace grpc { + +class AuthContext { + public: + typedef std::pair<grpc::string, grpc::string> Property; + + virtual ~AuthContext() {} + + // A peer identity, in general is one or more properties (in which case they + // have the same name). + virtual std::vector<grpc::string> GetPeerIdentity() const = 0; + virtual grpc::string GetPeerIdentityPropertyName() const = 0; + + // Returns all the property values with the given name. + virtual std::vector<grpc::string> FindPropertyValues( + const grpc::string& name) const = 0; +}; + +} // namespace grpc + +#endif // GRPCXX_AUTH_CONTEXT_H + diff --git a/include/grpc++/client_context.h b/include/grpc++/client_context.h index 4d96d862e7..7adaaa6e6f 100644 --- a/include/grpc++/client_context.h +++ b/include/grpc++/client_context.h @@ -40,6 +40,7 @@ #include <grpc/support/log.h> #include <grpc/support/time.h> +#include <grpc++/auth_context.h> #include <grpc++/config.h> #include <grpc++/status.h> #include <grpc++/time.h> @@ -108,6 +109,8 @@ class ClientContext { creds_ = creds; } + std::shared_ptr<const AuthContext> auth_context() const; + // Get and set census context void set_census_context(census_context* ccp) { census_context_ = ccp; } census_context* get_census_context() const { return census_context_; } @@ -159,6 +162,7 @@ class ClientContext { gpr_timespec deadline_; grpc::string authority_; std::shared_ptr<Credentials> creds_; + mutable std::shared_ptr<const AuthContext> auth_context_; census_context* census_context_; std::multimap<grpc::string, grpc::string> send_initial_metadata_; std::multimap<grpc::string, grpc::string> recv_initial_metadata_; diff --git a/include/grpc++/server_context.h b/include/grpc++/server_context.h index 326b6a125c..a4ee986df1 100644 --- a/include/grpc++/server_context.h +++ b/include/grpc++/server_context.h @@ -35,8 +35,10 @@ #define GRPCXX_SERVER_CONTEXT_H #include <map> +#include <memory> #include <grpc/support/time.h> +#include <grpc++/auth_context.h> #include <grpc++/config.h> #include <grpc++/time.h> @@ -97,6 +99,10 @@ class ServerContext { return client_metadata_; } + std::shared_ptr<const AuthContext> auth_context() const { + return auth_context_; + } + private: friend class ::grpc::Server; template <class W, class R> @@ -133,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_; |