Go to the documentation of this file.
19 #include <ruby/ruby.h>
23 #include <ruby/thread.h>
58 VALUE
result = rb_hash_new();
59 VALUE callback_func = rb_ary_entry(
args, 0);
60 VALUE callback_args = rb_ary_entry(
args, 1);
61 VALUE md_ary_obj = rb_ary_entry(
args, 2);
63 VALUE callback_func_str = rb_funcall(callback_func, rb_intern(
"to_s"), 0);
64 VALUE callback_args_str = rb_funcall(callback_args, rb_intern(
"to_s"), 0);
65 VALUE callback_source_info =
66 rb_funcall(callback_func, rb_intern(
"source_location"), 0);
67 if (callback_source_info != Qnil) {
68 VALUE source_filename = rb_ary_entry(callback_source_info, 0);
69 VALUE source_line_number = rb_funcall(
70 rb_ary_entry(callback_source_info, 1), rb_intern(
"to_s"), 0);
72 "GRPC_RUBY: grpc_rb_call_credentials invoking user callback:|%s| "
73 "source_filename:%s line_number:%s with arguments:|%s|",
74 StringValueCStr(callback_func_str),
75 StringValueCStr(source_filename),
76 StringValueCStr(source_line_number),
77 StringValueCStr(callback_args_str));
80 "GRPC_RUBY: grpc_rb_call_credentials invoking user callback:|%s| "
81 "(failed to get source filename and line) with arguments:|%s|",
82 StringValueCStr(callback_func_str),
83 StringValueCStr(callback_args_str));
87 rb_funcall(callback_func, rb_intern(
"call"), 1, callback_args);
94 rb_hash_aset(
result, rb_str_new2(
"details"), rb_str_new2(
""));
99 VALUE exception_object) {
100 VALUE
result = rb_hash_new();
101 VALUE backtrace = rb_funcall(exception_object, rb_intern(
"backtrace"), 0);
103 if (backtrace != Qnil) {
105 rb_funcall(backtrace, rb_intern(
"join"), 1, rb_str_new2(
"\n\tfrom "));
107 backtrace_str = rb_str_new2(
108 "failed to get backtrace, this exception was likely thrown from native "
111 VALUE rb_exception_info =
112 rb_funcall(exception_object, rb_intern(
"inspect"), 0);
115 "GRPC_RUBY call credentials callback failed, exception inspect:|%s| "
117 StringValueCStr(rb_exception_info), StringValueCStr(backtrace_str));
118 rb_hash_aset(
result, rb_str_new2(
"metadata"), Qnil);
119 rb_hash_aset(
result, rb_str_new2(
"status"),
121 rb_hash_aset(
result, rb_str_new2(
"details"), rb_exception_info);
130 VALUE callback_args = rb_ary_new();
131 VALUE
args = rb_hash_new();
138 rb_hash_aset(
args, ID2SYM(rb_intern(
"jwt_aud_uri")), auth_uri);
140 rb_ary_push(callback_args,
args);
144 rb_ary_push(callback_args,
150 status = NUM2INT(rb_hash_aref(
result, rb_str_new2(
"status")));
152 error_details = StringValueCStr(
details);
165 const char** error_details) {
212 "grpc_call_credentials",
219 #ifdef RUBY_TYPED_FREE_IMMEDIATELY
220 RUBY_TYPED_FREE_IMMEDIATELY
270 if (!rb_obj_is_proc(proc)) {
271 rb_raise(rb_eTypeError,
"Argument to CallCredentials#new must be a proc");
274 plugin.
state = (
void*)proc;
282 rb_raise(rb_eRuntimeError,
"could not create a credentials, not sure why");
304 for (
int i = 0;
i < argc;
i++) {
305 rb_ary_push(mark, argv[
i]);
static VALUE grpc_rb_call_credentials_callback(VALUE args)
#define GRPC_METADATA_CREDENTIALS_PLUGIN_SYNC_MAX
void(* grpc_credentials_plugin_metadata_cb)(void *user_data, const grpc_metadata *creds_md, size_t num_creds_md, grpc_status_code status, const char *error_details)
@ GRPC_STATUS_UNAUTHENTICATED
#define GRPC_RB_MEMSIZE_UNAVAILABLE
void grpc_ruby_shutdown()
GPRAPI void GPRAPI int gpr_should_log(gpr_log_severity severity)
grpc_auth_metadata_context context
GPRAPI void gpr_free(void *ptr)
static rb_data_type_t grpc_rb_call_credentials_data_type
GRPCAPI grpc_call_credentials * grpc_metadata_credentials_create_from_plugin(grpc_metadata_credentials_plugin plugin, grpc_security_level min_security_level, void *reserved)
static VALUE grpc_rb_call_credentials_compose(int argc, VALUE *argv, VALUE self)
GRPCAPI void grpc_call_credentials_release(grpc_call_credentials *creds)
grpc_credentials_plugin_metadata_cb callback
GRPCAPI grpc_call_credentials * grpc_composite_call_credentials_create(grpc_call_credentials *creds1, grpc_call_credentials *creds2, void *reserved)
GRPCAPI void grpc_auth_metadata_context_reset(grpc_auth_metadata_context *context)
void grpc_rb_metadata_array_destroy_including_entries(grpc_metadata_array *array)
static void grpc_rb_call_credentials_mark(void *p)
GPRAPI void * gpr_zalloc(size_t size)
grpc_call_credentials * grpc_rb_get_wrapped_call_credentials(VALUE v)
GPRAPI void gpr_log(const char *file, int line, gpr_log_severity severity, const char *format,...) GPR_PRINT_FORMAT_CHECK(4
static void grpc_rb_call_credentials_callback_with_gil(void *param)
static void grpc_rb_call_credentials_plugin_destroy(void *state)
grpc_channel_wrapper * wrapper
VALUE grpc_rb_wrap_call_credentials(grpc_call_credentials *c, VALUE mark)
const rb_data_type_t grpc_rb_md_ary_data_type
void grpc_rb_event_queue_enqueue(void(*callback)(void *), void *argument)
static grpc_slice details
grpc_call_credentials * wrapped
static VALUE grpc_rb_call_credentials_alloc(VALUE cls)
static void grpc_rb_call_credentials_free_internal(void *p)
static VALUE grpc_rb_call_credentials_callback_rescue(VALUE args, VALUE exception_object)
struct grpc_rb_call_credentials grpc_rb_call_credentials
#define ALLOC(class_name)
VALUE grpc_rb_cannot_init_copy(VALUE copy, VALUE self)
struct callback_params callback_params
void Init_grpc_call_credentials()
@ GRPC_PRIVACY_AND_INTEGRITY
static VALUE grpc_rb_cCallCredentials
GRPCAPI void grpc_auth_metadata_context_copy(grpc_auth_metadata_context *from, grpc_auth_metadata_context *to)
grpc::ClientContext context
static void grpc_rb_call_credentials_free(void *p)
static VALUE grpc_rb_call_credentials_init(VALUE self, VALUE proc)
static int grpc_rb_call_credentials_plugin_get_metadata(void *state, grpc_auth_metadata_context context, grpc_credentials_plugin_metadata_cb cb, void *user_data, grpc_metadata creds_md[GRPC_METADATA_CREDENTIALS_PLUGIN_SYNC_MAX], size_t *num_creds_md, grpc_status_code *status, const char **error_details)
OPENSSL_EXPORT pem_password_cb * cb
void grpc_rb_md_ary_convert(VALUE md_ary_hash, grpc_metadata_array *md_ary)
GRPCAPI void grpc_metadata_array_init(grpc_metadata_array *array)
grpc
Author(s):
autogenerated on Fri May 16 2025 02:59:59