Go to the documentation of this file.
24 #include <type_traits>
26 #include "absl/status/status.h"
27 #include "absl/strings/str_cat.h"
28 #include "absl/strings/string_view.h"
52 char* debug_c_str =
nullptr;
57 debug_c_str !=
nullptr
59 :
"grpc_plugin_credentials did not provide a debug string");
72 const char* error_details) {
75 "Getting metadata from plugin failed with error: ", error_details));
77 bool seen_illegal_header =
false;
78 for (
size_t i = 0;
i < num_md; ++
i) {
81 seen_illegal_header =
true;
85 "validate_metadata_from_plugin",
88 seen_illegal_header =
true;
92 if (seen_illegal_header) {
96 for (
size_t i = 0;
i < num_md; ++
i) {
112 if (!ready_.load(std::memory_order_acquire)) {
116 error_details_.c_str());
130 "plugin_credentials[%p]: request %p: plugin returned "
132 r->creds(),
r.get());
134 for (
size_t i = 0;
i < num_md; ++
i) {
138 r->metadata_.push_back(
p);
140 r->error_details_ = error_details ==
nullptr ?
"" : error_details;
142 r->ready_.store(
true, std::memory_order_release);
155 auto request = grpc_core::MakeRefCounted<PendingRequest>(
159 gpr_log(
GPR_INFO,
"plugin_credentials[%p]: request %p: invoking plugin",
163 size_t num_creds_md = 0;
165 const char* error_details =
nullptr;
170 auto child_request =
request->Ref();
173 child_request.get(), creds_md, &num_creds_md,
174 &
status, &error_details)) {
175 child_request.release();
178 "plugin_credentials[%p]: request %p: plugin will return "
187 "plugin_credentials[%p]: request %p: plugin returned "
194 for (
size_t i = 0;
i < num_creds_md; ++
i) {
198 gpr_free(
const_cast<char*
>(error_details));
211 GRPC_API_TRACE(
"grpc_metadata_credentials_create_from_plugin(reserved=%p)", 1,
#define GRPC_EXEC_CTX_FLAG_IS_FINISHED
#define GRPC_METADATA_CREDENTIALS_PLUGIN_SYNC_MAX
const grpc_slice & grpc_slice_ref_internal(const grpc_slice &slice)
std::string StrCat(const AlphaNum &a, const AlphaNum &b)
grpc_core::ArenaPromise< absl::StatusOr< grpc_core::ClientMetadataHandle > > GetRequestMetadata(grpc_core::ClientMetadataHandle initial_metadata, const GetRequestMetadataArgs *args) override
virtual grpc_security_level min_security_level() const
grpc_core::TraceFlag grpc_plugin_credentials_trace(false, "plugin_credentials")
absl::string_view StringViewFromSlice(const grpc_slice &slice)
GPRAPI void gpr_free(void *ptr)
grpc_plugin_credentials(grpc_metadata_credentials_plugin plugin, grpc_security_level min_security_level)
#define GRPC_LOG_IF_ERROR(what, error)
std::string debug_string() override
grpc_core::Poll< absl::StatusOr< grpc_core::ClientMetadataHandle > > PollAsyncResult()
#define GRPC_TRACE_FLAG_ENABLED(f)
constexpr absl::remove_reference_t< T > && move(T &&t) noexcept
GPRAPI void gpr_log(const char *file, int line, gpr_log_severity severity, const char *format,...) GPR_PRINT_FORMAT_CHECK(4
static void RequestMetadataReady(void *request, const grpc_metadata *md, size_t num_md, grpc_status_code status, const char *error_details)
absl::StatusOr< grpc_core::ClientMetadataHandle > ProcessPluginResult(const grpc_metadata *md, size_t num_md, grpc_status_code status, const char *error_details)
grpc_core::ExecCtx exec_ctx
grpc_metadata_credentials_plugin plugin_
grpc_call_credentials * grpc_metadata_credentials_create_from_plugin(grpc_metadata_credentials_plugin plugin, grpc_security_level min_security_level, void *reserved)
grpc_core::ClientMetadataHandle md_
Status UnavailableError(absl::string_view message)
~grpc_plugin_credentials() override
promise_detail::Immediate< T > Immediate(T value)
MetadataHandle< ClientMetadata > ClientMetadataHandle
grpc_core::UniqueTypeName type() const override
#define GRPC_EXEC_CTX_FLAG_THREAD_RESOURCE_LOOP
RefCountedPtr< grpc_call_credentials > Ref() GRPC_MUST_USE_RESULT
#define GRPC_API_TRACE(fmt, nargs, args)
void grpc_slice_unref_internal(const grpc_slice &slice)
grpc
Author(s):
autogenerated on Thu Mar 13 2025 03:00:53