GRPC Core  18.0.0
plugin_credentials.h
Go to the documentation of this file.
1 /*
2  *
3  * Copyright 2016 gRPC authors.
4  *
5  * Licensed under the Apache License, Version 2.0 (the "License");
6  * you may not use this file except in compliance with the License.
7  * You may obtain a copy of the License at
8  *
9  * http://www.apache.org/licenses/LICENSE-2.0
10  *
11  * Unless required by applicable law or agreed to in writing, software
12  * distributed under the License is distributed on an "AS IS" BASIS,
13  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14  * See the License for the specific language governing permissions and
15  * limitations under the License.
16  *
17  */
18 
19 #ifndef GRPC_CORE_LIB_SECURITY_CREDENTIALS_PLUGIN_PLUGIN_CREDENTIALS_H
20 #define GRPC_CORE_LIB_SECURITY_CREDENTIALS_PLUGIN_PLUGIN_CREDENTIALS_H
21 
23 
25 
27 
28 // This type is forward declared as a C struct and we cannot define it as a
29 // class. Otherwise, compiler will complain about type mismatch due to
30 // -Wmismatched-tags.
32  public:
33  struct pending_request {
34  bool cancelled;
40  };
41 
44  ~grpc_plugin_credentials() override;
45 
49  grpc_closure* on_request_metadata,
50  grpc_error_handle* error) override;
51 
53  grpc_error_handle error) override;
54 
55  // Checks if the request has been cancelled.
56  // If not, removes it from the pending list, so that it cannot be
57  // cancelled out from under us.
58  // When this returns, r->cancelled indicates whether the request was
59  // cancelled before completion.
61 
62  std::string debug_string() override;
63 
64  private:
65  void pending_request_remove_locked(pending_request* pending_request);
66 
68  gpr_mu mu_;
69  pending_request* pending_requests_ = nullptr;
70 };
71 
72 #endif /* GRPC_CORE_LIB_SECURITY_CREDENTIALS_PLUGIN_PLUGIN_CREDENTIALS_H */
Definition: trace.h:61
grpc_security_level
Definition: grpc_security_constants.h:129
pthread_mutex_t gpr_mu
Definition: sync_posix.h:45
grpc_error_handle error
Definition: lame_client.cc:54
grpc_core::TraceFlag grpc_plugin_credentials_trace
Context that can be used by metadata credentials plugin in order to create auth related metadata.
Definition: grpc_security.h:402
Definition: credentials.h:173
virtual grpc_security_level min_security_level() const
Definition: credentials.h:198
A closure over a grpc_iomgr_cb_func.
Definition: closure.h:56
Definition: credentials.h:153
Definition: error_internal.h:41
grpc_metadata_credentials plugin is an API user provided structure used to create grpc_credentials ob...
Definition: grpc_security.h:435
Definition: plugin_credentials.h:33
struct pending_request * prev
Definition: plugin_credentials.h:38
struct pending_request * next
Definition: plugin_credentials.h:39
grpc_closure * on_request_metadata
Definition: plugin_credentials.h:37
struct grpc_plugin_credentials * creds
Definition: plugin_credentials.h:35
grpc_credentials_mdelem_array * md_array
Definition: plugin_credentials.h:36
bool cancelled
Definition: plugin_credentials.h:34
Definition: plugin_credentials.h:31
void pending_request_complete(pending_request *r)
Definition: plugin_credentials.cc:76
void cancel_get_request_metadata(grpc_credentials_mdelem_array *md_array, grpc_error_handle error) override
Definition: plugin_credentials.cc:233
grpc_plugin_credentials(grpc_metadata_credentials_plugin plugin, grpc_security_level min_security_level)
Definition: plugin_credentials.cc:255
std::string debug_string() override
Definition: plugin_credentials.cc:46
~grpc_plugin_credentials() override
Definition: plugin_credentials.cc:39
bool get_request_metadata(grpc_polling_entity *pollent, grpc_auth_metadata_context context, grpc_credentials_mdelem_array *md_array, grpc_closure *on_request_metadata, grpc_error_handle *error) override
Definition: plugin_credentials.cc:157
Definition: polling_entity.h:37