grpc 1.7.3-universal-darwin → 1.8.0-universal-darwin
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of grpc might be problematic. Click here for more details.
- checksums.yaml +4 -4
 - data/src/ruby/ext/grpc/extconf.rb +4 -2
 - data/src/ruby/ext/grpc/rb_byte_buffer.c +5 -5
 - data/src/ruby/ext/grpc/rb_byte_buffer.h +2 -2
 - data/src/ruby/ext/grpc/rb_call.c +41 -42
 - data/src/ruby/ext/grpc/rb_call.h +6 -6
 - data/src/ruby/ext/grpc/rb_call_credentials.c +30 -30
 - data/src/ruby/ext/grpc/rb_channel.c +87 -87
 - data/src/ruby/ext/grpc/rb_channel_credentials.c +23 -23
 - data/src/ruby/ext/grpc/rb_completion_queue.c +11 -11
 - data/src/ruby/ext/grpc/rb_completion_queue.h +3 -3
 - data/src/ruby/ext/grpc/rb_compression_options.c +20 -20
 - data/src/ruby/ext/grpc/rb_event_thread.c +14 -14
 - data/src/ruby/ext/grpc/rb_event_thread.h +1 -1
 - data/src/ruby/ext/grpc/rb_grpc.c +8 -8
 - data/src/ruby/ext/grpc/rb_grpc_imports.generated.c +16 -58
 - data/src/ruby/ext/grpc/rb_grpc_imports.generated.h +242 -306
 - data/src/ruby/ext/grpc/rb_server.c +23 -23
 - data/src/ruby/ext/grpc/rb_server_credentials.c +13 -13
 - data/src/ruby/lib/grpc/2.0/grpc_c.bundle +0 -0
 - data/src/ruby/lib/grpc/2.1/grpc_c.bundle +0 -0
 - data/src/ruby/lib/grpc/2.2/grpc_c.bundle +0 -0
 - data/src/ruby/lib/grpc/2.3/grpc_c.bundle +0 -0
 - data/src/ruby/lib/grpc/2.4/grpc_c.bundle +0 -0
 - data/src/ruby/lib/grpc/generic/rpc_server.rb +25 -12
 - data/src/ruby/lib/grpc/version.rb +1 -1
 - data/src/ruby/pb/grpc/health/checker.rb +14 -0
 - data/src/ruby/spec/pb/health/checker_spec.rb +29 -0
 - metadata +2 -2
 
| 
         @@ -30,16 +30,16 @@ 
     | 
|
| 
       30 
30 
     | 
    
         | 
| 
       31 
31 
     | 
    
         
             
            /* Used to allow grpc_completion_queue_next call to release the GIL */
         
     | 
| 
       32 
32 
     | 
    
         
             
            typedef struct next_call_stack {
         
     | 
| 
       33 
     | 
    
         
            -
              grpc_completion_queue  
     | 
| 
      
 33 
     | 
    
         
            +
              grpc_completion_queue* cq;
         
     | 
| 
       34 
34 
     | 
    
         
             
              grpc_event event;
         
     | 
| 
       35 
35 
     | 
    
         
             
              gpr_timespec timeout;
         
     | 
| 
       36 
     | 
    
         
            -
              void  
     | 
| 
      
 36 
     | 
    
         
            +
              void* tag;
         
     | 
| 
       37 
37 
     | 
    
         
             
              volatile int interrupted;
         
     | 
| 
       38 
38 
     | 
    
         
             
            } next_call_stack;
         
     | 
| 
       39 
39 
     | 
    
         | 
| 
       40 
40 
     | 
    
         
             
            /* Calls grpc_completion_queue_pluck without holding the ruby GIL */
         
     | 
| 
       41 
     | 
    
         
            -
            static void  
     | 
| 
       42 
     | 
    
         
            -
              next_call_stack  
     | 
| 
      
 41 
     | 
    
         
            +
            static void* grpc_rb_completion_queue_pluck_no_gil(void* param) {
         
     | 
| 
      
 42 
     | 
    
         
            +
              next_call_stack* const next_call = (next_call_stack*)param;
         
     | 
| 
       43 
43 
     | 
    
         
             
              gpr_timespec increment = gpr_time_from_millis(20, GPR_TIMESPAN);
         
     | 
| 
       44 
44 
     | 
    
         
             
              gpr_timespec deadline;
         
     | 
| 
       45 
45 
     | 
    
         
             
              do {
         
     | 
| 
         @@ -55,7 +55,7 @@ static void *grpc_rb_completion_queue_pluck_no_gil(void *param) { 
     | 
|
| 
       55 
55 
     | 
    
         
             
            }
         
     | 
| 
       56 
56 
     | 
    
         | 
| 
       57 
57 
     | 
    
         
             
            /* Helper function to free a completion queue. */
         
     | 
| 
       58 
     | 
    
         
            -
            void grpc_rb_completion_queue_destroy(grpc_completion_queue  
     | 
| 
      
 58 
     | 
    
         
            +
            void grpc_rb_completion_queue_destroy(grpc_completion_queue* cq) {
         
     | 
| 
       59 
59 
     | 
    
         
             
              /* Every function that adds an event to a queue also synchronously plucks
         
     | 
| 
       60 
60 
     | 
    
         
             
                 that event from the queue, and holds a reference to the Ruby object that
         
     | 
| 
       61 
61 
     | 
    
         
             
                 holds the queue, so we only get to this point if all of those functions
         
     | 
| 
         @@ -64,15 +64,15 @@ void grpc_rb_completion_queue_destroy(grpc_completion_queue *cq) { 
     | 
|
| 
       64 
64 
     | 
    
         
             
              grpc_completion_queue_destroy(cq);
         
     | 
| 
       65 
65 
     | 
    
         
             
            }
         
     | 
| 
       66 
66 
     | 
    
         | 
| 
       67 
     | 
    
         
            -
            static void unblock_func(void  
     | 
| 
       68 
     | 
    
         
            -
              next_call_stack  
     | 
| 
      
 67 
     | 
    
         
            +
            static void unblock_func(void* param) {
         
     | 
| 
      
 68 
     | 
    
         
            +
              next_call_stack* const next_call = (next_call_stack*)param;
         
     | 
| 
       69 
69 
     | 
    
         
             
              next_call->interrupted = 1;
         
     | 
| 
       70 
70 
     | 
    
         
             
            }
         
     | 
| 
       71 
71 
     | 
    
         | 
| 
       72 
72 
     | 
    
         
             
            /* Does the same thing as grpc_completion_queue_pluck, while properly releasing
         
     | 
| 
       73 
73 
     | 
    
         
             
               the GVL and handling interrupts */
         
     | 
| 
       74 
     | 
    
         
            -
            grpc_event rb_completion_queue_pluck(grpc_completion_queue  
     | 
| 
       75 
     | 
    
         
            -
                                                 gpr_timespec deadline, void  
     | 
| 
      
 74 
     | 
    
         
            +
            grpc_event rb_completion_queue_pluck(grpc_completion_queue* queue, void* tag,
         
     | 
| 
      
 75 
     | 
    
         
            +
                                                 gpr_timespec deadline, void* reserved) {
         
     | 
| 
       76 
76 
     | 
    
         
             
              next_call_stack next_call;
         
     | 
| 
       77 
77 
     | 
    
         
             
              MEMZERO(&next_call, next_call_stack, 1);
         
     | 
| 
       78 
78 
     | 
    
         
             
              next_call.cq = queue;
         
     | 
| 
         @@ -91,8 +91,8 @@ grpc_event rb_completion_queue_pluck(grpc_completion_queue *queue, void *tag, 
     | 
|
| 
       91 
91 
     | 
    
         
             
              do {
         
     | 
| 
       92 
92 
     | 
    
         
             
                next_call.interrupted = 0;
         
     | 
| 
       93 
93 
     | 
    
         
             
                rb_thread_call_without_gvl(grpc_rb_completion_queue_pluck_no_gil,
         
     | 
| 
       94 
     | 
    
         
            -
                                           (void 
     | 
| 
       95 
     | 
    
         
            -
                                           (void 
     | 
| 
      
 94 
     | 
    
         
            +
                                           (void*)&next_call, unblock_func,
         
     | 
| 
      
 95 
     | 
    
         
            +
                                           (void*)&next_call);
         
     | 
| 
       96 
96 
     | 
    
         
             
                /* If an interrupt prevented pluck from returning useful information, then
         
     | 
| 
       97 
97 
     | 
    
         
             
                   any plucks that did complete must have timed out */
         
     | 
| 
       98 
98 
     | 
    
         
             
              } while (next_call.interrupted && next_call.event.type == GRPC_QUEUE_TIMEOUT);
         
     | 
| 
         @@ -23,14 +23,14 @@ 
     | 
|
| 
       23 
23 
     | 
    
         | 
| 
       24 
24 
     | 
    
         
             
            #include <grpc/grpc.h>
         
     | 
| 
       25 
25 
     | 
    
         | 
| 
       26 
     | 
    
         
            -
            void grpc_rb_completion_queue_destroy(grpc_completion_queue  
     | 
| 
      
 26 
     | 
    
         
            +
            void grpc_rb_completion_queue_destroy(grpc_completion_queue* cq);
         
     | 
| 
       27 
27 
     | 
    
         | 
| 
       28 
28 
     | 
    
         
             
            /**
         
     | 
| 
       29 
29 
     | 
    
         
             
             * Makes the implementation of CompletionQueue#pluck available in other files
         
     | 
| 
       30 
30 
     | 
    
         
             
             *
         
     | 
| 
       31 
31 
     | 
    
         
             
             * This avoids having code that holds the GIL repeated at multiple sites.
         
     | 
| 
       32 
32 
     | 
    
         
             
             */
         
     | 
| 
       33 
     | 
    
         
            -
            grpc_event rb_completion_queue_pluck(grpc_completion_queue  
     | 
| 
       34 
     | 
    
         
            -
                                                 gpr_timespec deadline, void  
     | 
| 
      
 33 
     | 
    
         
            +
            grpc_event rb_completion_queue_pluck(grpc_completion_queue* queue, void* tag,
         
     | 
| 
      
 34 
     | 
    
         
            +
                                                 gpr_timespec deadline, void* reserved);
         
     | 
| 
       35 
35 
     | 
    
         | 
| 
       36 
36 
     | 
    
         
             
            #endif /* GRPC_RB_COMPLETION_QUEUE_H_ */
         
     | 
| 
         @@ -47,17 +47,17 @@ static VALUE id_compress_level_high = Qnil; 
     | 
|
| 
       47 
47 
     | 
    
         
             
             * Ruby objects and don't have a mark for GC. */
         
     | 
| 
       48 
48 
     | 
    
         
             
            typedef struct grpc_rb_compression_options {
         
     | 
| 
       49 
49 
     | 
    
         
             
              /* The actual compression options that's being wrapped */
         
     | 
| 
       50 
     | 
    
         
            -
              grpc_compression_options  
     | 
| 
      
 50 
     | 
    
         
            +
              grpc_compression_options* wrapped;
         
     | 
| 
       51 
51 
     | 
    
         
             
            } grpc_rb_compression_options;
         
     | 
| 
       52 
52 
     | 
    
         | 
| 
       53 
53 
     | 
    
         
             
            /* Destroys the compression options instances and free the
         
     | 
| 
       54 
54 
     | 
    
         
             
             * wrapped grpc compression options. */
         
     | 
| 
       55 
     | 
    
         
            -
            static void grpc_rb_compression_options_free(void  
     | 
| 
       56 
     | 
    
         
            -
              grpc_rb_compression_options  
     | 
| 
      
 55 
     | 
    
         
            +
            static void grpc_rb_compression_options_free(void* p) {
         
     | 
| 
      
 56 
     | 
    
         
            +
              grpc_rb_compression_options* wrapper = NULL;
         
     | 
| 
       57 
57 
     | 
    
         
             
              if (p == NULL) {
         
     | 
| 
       58 
58 
     | 
    
         
             
                return;
         
     | 
| 
       59 
59 
     | 
    
         
             
              };
         
     | 
| 
       60 
     | 
    
         
            -
              wrapper = (grpc_rb_compression_options 
     | 
| 
      
 60 
     | 
    
         
            +
              wrapper = (grpc_rb_compression_options*)p;
         
     | 
| 
       61 
61 
     | 
    
         | 
| 
       62 
62 
     | 
    
         
             
              if (wrapper->wrapped != NULL) {
         
     | 
| 
       63 
63 
     | 
    
         
             
                gpr_free(wrapper->wrapped);
         
     | 
| 
         @@ -85,7 +85,7 @@ static rb_data_type_t grpc_rb_compression_options_data_type = { 
     | 
|
| 
       85 
85 
     | 
    
         
             
               Allocate the wrapped grpc compression options and
         
     | 
| 
       86 
86 
     | 
    
         
             
               initialize it here too. */
         
     | 
| 
       87 
87 
     | 
    
         
             
            static VALUE grpc_rb_compression_options_alloc(VALUE cls) {
         
     | 
| 
       88 
     | 
    
         
            -
              grpc_rb_compression_options  
     | 
| 
      
 88 
     | 
    
         
            +
              grpc_rb_compression_options* wrapper = NULL;
         
     | 
| 
       89 
89 
     | 
    
         | 
| 
       90 
90 
     | 
    
         
             
              grpc_ruby_once_init();
         
     | 
| 
       91 
91 
     | 
    
         | 
| 
         @@ -103,7 +103,7 @@ static VALUE grpc_rb_compression_options_alloc(VALUE cls) { 
     | 
|
| 
       103 
103 
     | 
    
         
             
            VALUE grpc_rb_compression_options_disable_compression_algorithm_internal(
         
     | 
| 
       104 
104 
     | 
    
         
             
                VALUE self, VALUE algorithm_to_disable) {
         
     | 
| 
       105 
105 
     | 
    
         
             
              grpc_compression_algorithm compression_algorithm = 0;
         
     | 
| 
       106 
     | 
    
         
            -
              grpc_rb_compression_options  
     | 
| 
      
 106 
     | 
    
         
            +
              grpc_rb_compression_options* wrapper = NULL;
         
     | 
| 
       107 
107 
     | 
    
         | 
| 
       108 
108 
     | 
    
         
             
              TypedData_Get_Struct(self, grpc_rb_compression_options,
         
     | 
| 
       109 
109 
     | 
    
         
             
                                   &grpc_rb_compression_options_data_type, wrapper);
         
     | 
| 
         @@ -145,7 +145,7 @@ grpc_compression_level grpc_rb_compression_options_level_name_to_value_internal( 
     | 
|
| 
       145 
145 
     | 
    
         
             
            /* Sets the default compression level, given the name of a compression level.
         
     | 
| 
       146 
146 
     | 
    
         
             
             * Throws an error if no algorithm matched. */
         
     | 
| 
       147 
147 
     | 
    
         
             
            void grpc_rb_compression_options_set_default_level(
         
     | 
| 
       148 
     | 
    
         
            -
                grpc_compression_options  
     | 
| 
      
 148 
     | 
    
         
            +
                grpc_compression_options* options, VALUE new_level_name) {
         
     | 
| 
       149 
149 
     | 
    
         
             
              options->default_level.level =
         
     | 
| 
       150 
150 
     | 
    
         
             
                  grpc_rb_compression_options_level_name_to_value_internal(new_level_name);
         
     | 
| 
       151 
151 
     | 
    
         
             
              options->default_level.is_set = 1;
         
     | 
| 
         @@ -156,10 +156,10 @@ void grpc_rb_compression_options_set_default_level( 
     | 
|
| 
       156 
156 
     | 
    
         
             
             * algorithm_value is an out parameter.
         
     | 
| 
       157 
157 
     | 
    
         
             
             * Raises an error if the name of the algorithm passed in is invalid. */
         
     | 
| 
       158 
158 
     | 
    
         
             
            void grpc_rb_compression_options_algorithm_name_to_value_internal(
         
     | 
| 
       159 
     | 
    
         
            -
                grpc_compression_algorithm  
     | 
| 
      
 159 
     | 
    
         
            +
                grpc_compression_algorithm* algorithm_value, VALUE algorithm_name) {
         
     | 
| 
       160 
160 
     | 
    
         
             
              grpc_slice name_slice;
         
     | 
| 
       161 
161 
     | 
    
         
             
              VALUE algorithm_name_as_string = Qnil;
         
     | 
| 
       162 
     | 
    
         
            -
              char  
     | 
| 
      
 162 
     | 
    
         
            +
              char* tmp_str = NULL;
         
     | 
| 
       163 
163 
     | 
    
         | 
| 
       164 
164 
     | 
    
         
             
              Check_Type(algorithm_name, T_SYMBOL);
         
     | 
| 
       165 
165 
     | 
    
         | 
| 
         @@ -186,7 +186,7 @@ void grpc_rb_compression_options_algorithm_name_to_value_internal( 
     | 
|
| 
       186 
186 
     | 
    
         
             
             * readable algorithm name. */
         
     | 
| 
       187 
187 
     | 
    
         
             
            VALUE grpc_rb_compression_options_is_algorithm_enabled(VALUE self,
         
     | 
| 
       188 
188 
     | 
    
         
             
                                                                   VALUE algorithm_name) {
         
     | 
| 
       189 
     | 
    
         
            -
              grpc_rb_compression_options  
     | 
| 
      
 189 
     | 
    
         
            +
              grpc_rb_compression_options* wrapper = NULL;
         
     | 
| 
       190 
190 
     | 
    
         
             
              grpc_compression_algorithm internal_algorithm_value;
         
     | 
| 
       191 
191 
     | 
    
         | 
| 
       192 
192 
     | 
    
         
             
              TypedData_Get_Struct(self, grpc_rb_compression_options,
         
     | 
| 
         @@ -204,7 +204,7 @@ VALUE grpc_rb_compression_options_is_algorithm_enabled(VALUE self, 
     | 
|
| 
       204 
204 
     | 
    
         
             
            /* Sets the default algorithm to the name of the algorithm passed in.
         
     | 
| 
       205 
205 
     | 
    
         
             
             * Raises an error if the name is not a valid compression algorithm name. */
         
     | 
| 
       206 
206 
     | 
    
         
             
            void grpc_rb_compression_options_set_default_algorithm(
         
     | 
| 
       207 
     | 
    
         
            -
                grpc_compression_options  
     | 
| 
      
 207 
     | 
    
         
            +
                grpc_compression_options* options, VALUE algorithm_name) {
         
     | 
| 
       208 
208 
     | 
    
         
             
              grpc_rb_compression_options_algorithm_name_to_value_internal(
         
     | 
| 
       209 
209 
     | 
    
         
             
                  &options->default_algorithm.algorithm, algorithm_name);
         
     | 
| 
       210 
210 
     | 
    
         
             
              options->default_algorithm.is_set = 1;
         
     | 
| 
         @@ -214,7 +214,7 @@ void grpc_rb_compression_options_set_default_algorithm( 
     | 
|
| 
       214 
214 
     | 
    
         
             
             * algorithm.
         
     | 
| 
       215 
215 
     | 
    
         
             
             * Fails if the algorithm name is invalid. */
         
     | 
| 
       216 
216 
     | 
    
         
             
            void grpc_rb_compression_options_disable_algorithm(
         
     | 
| 
       217 
     | 
    
         
            -
                grpc_compression_options  
     | 
| 
      
 217 
     | 
    
         
            +
                grpc_compression_options* compression_options, VALUE algorithm_name) {
         
     | 
| 
       218 
218 
     | 
    
         
             
              grpc_compression_algorithm internal_algorithm_value;
         
     | 
| 
       219 
219 
     | 
    
         | 
| 
       220 
220 
     | 
    
         
             
              grpc_rb_compression_options_algorithm_name_to_value_internal(
         
     | 
| 
         @@ -226,8 +226,8 @@ void grpc_rb_compression_options_disable_algorithm( 
     | 
|
| 
       226 
226 
     | 
    
         
             
            /* Provides a ruby hash of GRPC core channel argument key-values that
         
     | 
| 
       227 
227 
     | 
    
         
             
             * correspond to the compression settings on this instance. */
         
     | 
| 
       228 
228 
     | 
    
         
             
            VALUE grpc_rb_compression_options_to_hash(VALUE self) {
         
     | 
| 
       229 
     | 
    
         
            -
              grpc_rb_compression_options  
     | 
| 
       230 
     | 
    
         
            -
              grpc_compression_options  
     | 
| 
      
 229 
     | 
    
         
            +
              grpc_rb_compression_options* wrapper = NULL;
         
     | 
| 
      
 230 
     | 
    
         
            +
              grpc_compression_options* compression_options = NULL;
         
     | 
| 
       231 
231 
     | 
    
         
             
              VALUE channel_arg_hash = rb_hash_new();
         
     | 
| 
       232 
232 
     | 
    
         
             
              VALUE key = Qnil;
         
     | 
| 
       233 
233 
     | 
    
         
             
              VALUE value = Qnil;
         
     | 
| 
         @@ -284,7 +284,7 @@ VALUE grpc_rb_compression_options_level_value_to_name_internal( 
     | 
|
| 
       284 
284 
     | 
    
         
             
             * Fails if the enum value is invalid. */
         
     | 
| 
       285 
285 
     | 
    
         
             
            VALUE grpc_rb_compression_options_algorithm_value_to_name_internal(
         
     | 
| 
       286 
286 
     | 
    
         
             
                grpc_compression_algorithm internal_value) {
         
     | 
| 
       287 
     | 
    
         
            -
              char  
     | 
| 
      
 287 
     | 
    
         
            +
              char* algorithm_name = NULL;
         
     | 
| 
       288 
288 
     | 
    
         | 
| 
       289 
289 
     | 
    
         
             
              if (!grpc_compression_algorithm_name(internal_value, &algorithm_name)) {
         
     | 
| 
       290 
290 
     | 
    
         
             
                rb_raise(rb_eArgError, "Failed to convert algorithm value to name");
         
     | 
| 
         @@ -297,7 +297,7 @@ VALUE grpc_rb_compression_options_algorithm_value_to_name_internal( 
     | 
|
| 
       297 
297 
     | 
    
         
             
             * Returns nil if no algorithm has been set. */
         
     | 
| 
       298 
298 
     | 
    
         
             
            VALUE grpc_rb_compression_options_get_default_algorithm(VALUE self) {
         
     | 
| 
       299 
299 
     | 
    
         
             
              grpc_compression_algorithm internal_value;
         
     | 
| 
       300 
     | 
    
         
            -
              grpc_rb_compression_options  
     | 
| 
      
 300 
     | 
    
         
            +
              grpc_rb_compression_options* wrapper = NULL;
         
     | 
| 
       301 
301 
     | 
    
         | 
| 
       302 
302 
     | 
    
         
             
              TypedData_Get_Struct(self, grpc_rb_compression_options,
         
     | 
| 
       303 
303 
     | 
    
         
             
                                   &grpc_rb_compression_options_data_type, wrapper);
         
     | 
| 
         @@ -316,7 +316,7 @@ VALUE grpc_rb_compression_options_get_default_algorithm(VALUE self) { 
     | 
|
| 
       316 
316 
     | 
    
         
             
             * A nil return value means that it hasn't been set. */
         
     | 
| 
       317 
317 
     | 
    
         
             
            VALUE grpc_rb_compression_options_get_default_level(VALUE self) {
         
     | 
| 
       318 
318 
     | 
    
         
             
              grpc_compression_level internal_value;
         
     | 
| 
       319 
     | 
    
         
            -
              grpc_rb_compression_options  
     | 
| 
      
 319 
     | 
    
         
            +
              grpc_rb_compression_options* wrapper = NULL;
         
     | 
| 
       320 
320 
     | 
    
         | 
| 
       321 
321 
     | 
    
         
             
              TypedData_Get_Struct(self, grpc_rb_compression_options,
         
     | 
| 
       322 
322 
     | 
    
         
             
                                   &grpc_rb_compression_options_data_type, wrapper);
         
     | 
| 
         @@ -335,7 +335,7 @@ VALUE grpc_rb_compression_options_get_default_level(VALUE self) { 
     | 
|
| 
       335 
335 
     | 
    
         
             
            VALUE grpc_rb_compression_options_get_disabled_algorithms(VALUE self) {
         
     | 
| 
       336 
336 
     | 
    
         
             
              VALUE disabled_algorithms = rb_ary_new();
         
     | 
| 
       337 
337 
     | 
    
         
             
              grpc_compression_algorithm internal_value;
         
     | 
| 
       338 
     | 
    
         
            -
              grpc_rb_compression_options  
     | 
| 
      
 338 
     | 
    
         
            +
              grpc_rb_compression_options* wrapper = NULL;
         
     | 
| 
       339 
339 
     | 
    
         | 
| 
       340 
340 
     | 
    
         
             
              TypedData_Get_Struct(self, grpc_rb_compression_options,
         
     | 
| 
       341 
341 
     | 
    
         
             
                                   &grpc_rb_compression_options_data_type, wrapper);
         
     | 
| 
         @@ -363,8 +363,8 @@ VALUE grpc_rb_compression_options_get_disabled_algorithms(VALUE self) { 
     | 
|
| 
       363 
363 
     | 
    
         
             
             *   channel_arg hash = Hash.new[...]
         
     | 
| 
       364 
364 
     | 
    
         
             
             *   channel_arg_hash_with_compression_options = channel_arg_hash.merge(options)
         
     | 
| 
       365 
365 
     | 
    
         
             
             */
         
     | 
| 
       366 
     | 
    
         
            -
            VALUE grpc_rb_compression_options_init(int argc, VALUE  
     | 
| 
       367 
     | 
    
         
            -
              grpc_rb_compression_options  
     | 
| 
      
 366 
     | 
    
         
            +
            VALUE grpc_rb_compression_options_init(int argc, VALUE* argv, VALUE self) {
         
     | 
| 
      
 367 
     | 
    
         
            +
              grpc_rb_compression_options* wrapper = NULL;
         
     | 
| 
       368 
368 
     | 
    
         
             
              VALUE default_algorithm = Qnil;
         
     | 
| 
       369 
369 
     | 
    
         
             
              VALUE default_level = Qnil;
         
     | 
| 
       370 
370 
     | 
    
         
             
              VALUE disabled_algorithms = Qnil;
         
     | 
| 
         @@ -31,15 +31,15 @@ 
     | 
|
| 
       31 
31 
     | 
    
         | 
| 
       32 
32 
     | 
    
         
             
            typedef struct grpc_rb_event {
         
     | 
| 
       33 
33 
     | 
    
         
             
              // callback will be called with argument while holding the GVL
         
     | 
| 
       34 
     | 
    
         
            -
              void (*callback)(void 
     | 
| 
       35 
     | 
    
         
            -
              void  
     | 
| 
      
 34 
     | 
    
         
            +
              void (*callback)(void*);
         
     | 
| 
      
 35 
     | 
    
         
            +
              void* argument;
         
     | 
| 
       36 
36 
     | 
    
         | 
| 
       37 
     | 
    
         
            -
              struct grpc_rb_event  
     | 
| 
      
 37 
     | 
    
         
            +
              struct grpc_rb_event* next;
         
     | 
| 
       38 
38 
     | 
    
         
             
            } grpc_rb_event;
         
     | 
| 
       39 
39 
     | 
    
         | 
| 
       40 
40 
     | 
    
         
             
            typedef struct grpc_rb_event_queue {
         
     | 
| 
       41 
     | 
    
         
            -
              grpc_rb_event  
     | 
| 
       42 
     | 
    
         
            -
              grpc_rb_event  
     | 
| 
      
 41 
     | 
    
         
            +
              grpc_rb_event* head;
         
     | 
| 
      
 42 
     | 
    
         
            +
              grpc_rb_event* tail;
         
     | 
| 
       43 
43 
     | 
    
         | 
| 
       44 
44 
     | 
    
         
             
              gpr_mu mu;
         
     | 
| 
       45 
45 
     | 
    
         
             
              gpr_cv cv;
         
     | 
| 
         @@ -50,8 +50,8 @@ typedef struct grpc_rb_event_queue { 
     | 
|
| 
       50 
50 
     | 
    
         | 
| 
       51 
51 
     | 
    
         
             
            static grpc_rb_event_queue event_queue;
         
     | 
| 
       52 
52 
     | 
    
         | 
| 
       53 
     | 
    
         
            -
            void grpc_rb_event_queue_enqueue(void (*callback)(void 
     | 
| 
       54 
     | 
    
         
            -
              grpc_rb_event  
     | 
| 
      
 53 
     | 
    
         
            +
            void grpc_rb_event_queue_enqueue(void (*callback)(void*), void* argument) {
         
     | 
| 
      
 54 
     | 
    
         
            +
              grpc_rb_event* event = gpr_malloc(sizeof(grpc_rb_event));
         
     | 
| 
       55 
55 
     | 
    
         
             
              event->callback = callback;
         
     | 
| 
       56 
56 
     | 
    
         
             
              event->argument = argument;
         
     | 
| 
       57 
57 
     | 
    
         
             
              event->next = NULL;
         
     | 
| 
         @@ -66,8 +66,8 @@ void grpc_rb_event_queue_enqueue(void (*callback)(void *), void *argument) { 
     | 
|
| 
       66 
66 
     | 
    
         
             
              gpr_mu_unlock(&event_queue.mu);
         
     | 
| 
       67 
67 
     | 
    
         
             
            }
         
     | 
| 
       68 
68 
     | 
    
         | 
| 
       69 
     | 
    
         
            -
            static grpc_rb_event  
     | 
| 
       70 
     | 
    
         
            -
              grpc_rb_event  
     | 
| 
      
 69 
     | 
    
         
            +
            static grpc_rb_event* grpc_rb_event_queue_dequeue() {
         
     | 
| 
      
 70 
     | 
    
         
            +
              grpc_rb_event* event;
         
     | 
| 
       71 
71 
     | 
    
         
             
              if (event_queue.head == NULL) {
         
     | 
| 
       72 
72 
     | 
    
         
             
                event = NULL;
         
     | 
| 
       73 
73 
     | 
    
         
             
              } else {
         
     | 
| 
         @@ -86,8 +86,8 @@ static void grpc_rb_event_queue_destroy() { 
     | 
|
| 
       86 
86 
     | 
    
         
             
              gpr_cv_destroy(&event_queue.cv);
         
     | 
| 
       87 
87 
     | 
    
         
             
            }
         
     | 
| 
       88 
88 
     | 
    
         | 
| 
       89 
     | 
    
         
            -
            static void  
     | 
| 
       90 
     | 
    
         
            -
              grpc_rb_event  
     | 
| 
      
 89 
     | 
    
         
            +
            static void* grpc_rb_wait_for_event_no_gil(void* param) {
         
     | 
| 
      
 90 
     | 
    
         
            +
              grpc_rb_event* event = NULL;
         
     | 
| 
       91 
91 
     | 
    
         
             
              (void)param;
         
     | 
| 
       92 
92 
     | 
    
         
             
              gpr_mu_lock(&event_queue.mu);
         
     | 
| 
       93 
93 
     | 
    
         
             
              while (!event_queue.abort) {
         
     | 
| 
         @@ -102,7 +102,7 @@ static void *grpc_rb_wait_for_event_no_gil(void *param) { 
     | 
|
| 
       102 
102 
     | 
    
         
             
              return NULL;
         
     | 
| 
       103 
103 
     | 
    
         
             
            }
         
     | 
| 
       104 
104 
     | 
    
         | 
| 
       105 
     | 
    
         
            -
            static void grpc_rb_event_unblocking_func(void  
     | 
| 
      
 105 
     | 
    
         
            +
            static void grpc_rb_event_unblocking_func(void* arg) {
         
     | 
| 
       106 
106 
     | 
    
         
             
              (void)arg;
         
     | 
| 
       107 
107 
     | 
    
         
             
              gpr_mu_lock(&event_queue.mu);
         
     | 
| 
       108 
108 
     | 
    
         
             
              event_queue.abort = true;
         
     | 
| 
         @@ -113,10 +113,10 @@ static void grpc_rb_event_unblocking_func(void *arg) { 
     | 
|
| 
       113 
113 
     | 
    
         
             
            /* This is the implementation of the thread that handles auth metadata plugin
         
     | 
| 
       114 
114 
     | 
    
         
             
             * events */
         
     | 
| 
       115 
115 
     | 
    
         
             
            static VALUE grpc_rb_event_thread(VALUE arg) {
         
     | 
| 
       116 
     | 
    
         
            -
              grpc_rb_event  
     | 
| 
      
 116 
     | 
    
         
            +
              grpc_rb_event* event;
         
     | 
| 
       117 
117 
     | 
    
         
             
              (void)arg;
         
     | 
| 
       118 
118 
     | 
    
         
             
              while (true) {
         
     | 
| 
       119 
     | 
    
         
            -
                event = (grpc_rb_event 
     | 
| 
      
 119 
     | 
    
         
            +
                event = (grpc_rb_event*)rb_thread_call_without_gvl(
         
     | 
| 
       120 
120 
     | 
    
         
             
                    grpc_rb_wait_for_event_no_gil, NULL, grpc_rb_event_unblocking_func,
         
     | 
| 
       121 
121 
     | 
    
         
             
                    NULL);
         
     | 
| 
       122 
122 
     | 
    
         
             
                if (event == NULL) {
         
     | 
    
        data/src/ruby/ext/grpc/rb_grpc.c
    CHANGED
    
    | 
         @@ -90,9 +90,9 @@ static ID id_tv_nsec; 
     | 
|
| 
       90 
90 
     | 
    
         
             
             */
         
     | 
| 
       91 
91 
     | 
    
         
             
            gpr_timespec grpc_rb_time_timeval(VALUE time, int interval) {
         
     | 
| 
       92 
92 
     | 
    
         
             
              gpr_timespec t;
         
     | 
| 
       93 
     | 
    
         
            -
              gpr_timespec  
     | 
| 
       94 
     | 
    
         
            -
              const char  
     | 
| 
       95 
     | 
    
         
            -
              const char  
     | 
| 
      
 93 
     | 
    
         
            +
              gpr_timespec* time_const;
         
     | 
| 
      
 94 
     | 
    
         
            +
              const char* tstr = interval ? "time interval" : "time";
         
     | 
| 
      
 95 
     | 
    
         
            +
              const char* want = " want <secs from epoch>|<Time>|<GRPC::TimeConst.*>";
         
     | 
| 
       96 
96 
     | 
    
         | 
| 
       97 
97 
     | 
    
         
             
              t.clock_type = GPR_CLOCK_REALTIME;
         
     | 
| 
       98 
98 
     | 
    
         
             
              switch (TYPE(time)) {
         
     | 
| 
         @@ -201,7 +201,7 @@ static ID id_to_s; 
     | 
|
| 
       201 
201 
     | 
    
         | 
| 
       202 
202 
     | 
    
         
             
            /* Converts a wrapped time constant to a standard time. */
         
     | 
| 
       203 
203 
     | 
    
         
             
            static VALUE grpc_rb_time_val_to_time(VALUE self) {
         
     | 
| 
       204 
     | 
    
         
            -
              gpr_timespec  
     | 
| 
      
 204 
     | 
    
         
            +
              gpr_timespec* time_const = NULL;
         
     | 
| 
       205 
205 
     | 
    
         
             
              gpr_timespec real_time;
         
     | 
| 
       206 
206 
     | 
    
         
             
              TypedData_Get_Struct(self, gpr_timespec, &grpc_rb_timespec_data_type,
         
     | 
| 
       207 
207 
     | 
    
         
             
                                   time_const);
         
     | 
| 
         @@ -236,15 +236,15 @@ static void Init_grpc_time_consts() { 
     | 
|
| 
       236 
236 
     | 
    
         
             
              rb_define_const(
         
     | 
| 
       237 
237 
     | 
    
         
             
                  grpc_rb_mTimeConsts, "ZERO",
         
     | 
| 
       238 
238 
     | 
    
         
             
                  TypedData_Wrap_Struct(grpc_rb_cTimeVal, &grpc_rb_timespec_data_type,
         
     | 
| 
       239 
     | 
    
         
            -
                                        (void 
     | 
| 
      
 239 
     | 
    
         
            +
                                        (void*)&zero_realtime));
         
     | 
| 
       240 
240 
     | 
    
         
             
              rb_define_const(
         
     | 
| 
       241 
241 
     | 
    
         
             
                  grpc_rb_mTimeConsts, "INFINITE_FUTURE",
         
     | 
| 
       242 
242 
     | 
    
         
             
                  TypedData_Wrap_Struct(grpc_rb_cTimeVal, &grpc_rb_timespec_data_type,
         
     | 
| 
       243 
     | 
    
         
            -
                                        (void 
     | 
| 
      
 243 
     | 
    
         
            +
                                        (void*)&inf_future_realtime));
         
     | 
| 
       244 
244 
     | 
    
         
             
              rb_define_const(
         
     | 
| 
       245 
245 
     | 
    
         
             
                  grpc_rb_mTimeConsts, "INFINITE_PAST",
         
     | 
| 
       246 
246 
     | 
    
         
             
                  TypedData_Wrap_Struct(grpc_rb_cTimeVal, &grpc_rb_timespec_data_type,
         
     | 
| 
       247 
     | 
    
         
            -
                                        (void 
     | 
| 
      
 247 
     | 
    
         
            +
                                        (void*)&inf_past_realtime));
         
     | 
| 
       248 
248 
     | 
    
         
             
              rb_define_method(grpc_rb_cTimeVal, "to_time", grpc_rb_time_val_to_time, 0);
         
     | 
| 
       249 
249 
     | 
    
         
             
              rb_define_method(grpc_rb_cTimeVal, "inspect", grpc_rb_time_val_inspect, 0);
         
     | 
| 
       250 
250 
     | 
    
         
             
              rb_define_method(grpc_rb_cTimeVal, "to_s", grpc_rb_time_val_to_s, 0);
         
     | 
| 
         @@ -315,8 +315,8 @@ void Init_grpc_c() { 
     | 
|
| 
       315 
315 
     | 
    
         
             
                return;
         
     | 
| 
       316 
316 
     | 
    
         
             
              }
         
     | 
| 
       317 
317 
     | 
    
         | 
| 
       318 
     | 
    
         
            -
              bg_thread_init_rb_mu = rb_mutex_new();
         
     | 
| 
       319 
318 
     | 
    
         
             
              rb_global_variable(&bg_thread_init_rb_mu);
         
     | 
| 
      
 319 
     | 
    
         
            +
              bg_thread_init_rb_mu = rb_mutex_new();
         
     | 
| 
       320 
320 
     | 
    
         | 
| 
       321 
321 
     | 
    
         
             
              grpc_rb_mGRPC = rb_define_module("GRPC");
         
     | 
| 
       322 
322 
     | 
    
         
             
              grpc_rb_mGrpcCore = rb_define_module_under(grpc_rb_mGRPC, "Core");
         
     | 
| 
         @@ -22,34 +22,6 @@ 
     | 
|
| 
       22 
22 
     | 
    
         | 
| 
       23 
23 
     | 
    
         
             
            #include "rb_grpc_imports.generated.h"
         
     | 
| 
       24 
24 
     | 
    
         | 
| 
       25 
     | 
    
         
            -
            census_initialize_type census_initialize_import;
         
     | 
| 
       26 
     | 
    
         
            -
            census_shutdown_type census_shutdown_import;
         
     | 
| 
       27 
     | 
    
         
            -
            census_supported_type census_supported_import;
         
     | 
| 
       28 
     | 
    
         
            -
            census_enabled_type census_enabled_import;
         
     | 
| 
       29 
     | 
    
         
            -
            census_context_create_type census_context_create_import;
         
     | 
| 
       30 
     | 
    
         
            -
            census_context_destroy_type census_context_destroy_import;
         
     | 
| 
       31 
     | 
    
         
            -
            census_context_get_status_type census_context_get_status_import;
         
     | 
| 
       32 
     | 
    
         
            -
            census_context_initialize_iterator_type census_context_initialize_iterator_import;
         
     | 
| 
       33 
     | 
    
         
            -
            census_context_next_tag_type census_context_next_tag_import;
         
     | 
| 
       34 
     | 
    
         
            -
            census_context_get_tag_type census_context_get_tag_import;
         
     | 
| 
       35 
     | 
    
         
            -
            census_context_encode_type census_context_encode_import;
         
     | 
| 
       36 
     | 
    
         
            -
            census_context_decode_type census_context_decode_import;
         
     | 
| 
       37 
     | 
    
         
            -
            census_trace_mask_type census_trace_mask_import;
         
     | 
| 
       38 
     | 
    
         
            -
            census_set_trace_mask_type census_set_trace_mask_import;
         
     | 
| 
       39 
     | 
    
         
            -
            census_start_rpc_op_timestamp_type census_start_rpc_op_timestamp_import;
         
     | 
| 
       40 
     | 
    
         
            -
            census_start_client_rpc_op_type census_start_client_rpc_op_import;
         
     | 
| 
       41 
     | 
    
         
            -
            census_set_rpc_client_peer_type census_set_rpc_client_peer_import;
         
     | 
| 
       42 
     | 
    
         
            -
            census_start_server_rpc_op_type census_start_server_rpc_op_import;
         
     | 
| 
       43 
     | 
    
         
            -
            census_start_op_type census_start_op_import;
         
     | 
| 
       44 
     | 
    
         
            -
            census_end_op_type census_end_op_import;
         
     | 
| 
       45 
     | 
    
         
            -
            census_trace_print_type census_trace_print_import;
         
     | 
| 
       46 
     | 
    
         
            -
            census_trace_scan_start_type census_trace_scan_start_import;
         
     | 
| 
       47 
     | 
    
         
            -
            census_get_trace_record_type census_get_trace_record_import;
         
     | 
| 
       48 
     | 
    
         
            -
            census_trace_scan_end_type census_trace_scan_end_import;
         
     | 
| 
       49 
     | 
    
         
            -
            census_define_resource_type census_define_resource_import;
         
     | 
| 
       50 
     | 
    
         
            -
            census_delete_resource_type census_delete_resource_import;
         
     | 
| 
       51 
     | 
    
         
            -
            census_resource_id_type census_resource_id_import;
         
     | 
| 
       52 
     | 
    
         
            -
            census_record_values_type census_record_values_import;
         
     | 
| 
       53 
25 
     | 
    
         
             
            grpc_compression_algorithm_parse_type grpc_compression_algorithm_parse_import;
         
     | 
| 
       54 
26 
     | 
    
         
             
            grpc_compression_algorithm_name_type grpc_compression_algorithm_name_import;
         
     | 
| 
       55 
27 
     | 
    
         
             
            grpc_stream_compression_algorithm_name_type grpc_stream_compression_algorithm_name_import;
         
     | 
| 
         @@ -77,6 +49,8 @@ grpc_completion_queue_next_type grpc_completion_queue_next_import; 
     | 
|
| 
       77 
49 
     | 
    
         
             
            grpc_completion_queue_pluck_type grpc_completion_queue_pluck_import;
         
     | 
| 
       78 
50 
     | 
    
         
             
            grpc_completion_queue_shutdown_type grpc_completion_queue_shutdown_import;
         
     | 
| 
       79 
51 
     | 
    
         
             
            grpc_completion_queue_destroy_type grpc_completion_queue_destroy_import;
         
     | 
| 
      
 52 
     | 
    
         
            +
            grpc_completion_queue_thread_local_cache_init_type grpc_completion_queue_thread_local_cache_init_import;
         
     | 
| 
      
 53 
     | 
    
         
            +
            grpc_completion_queue_thread_local_cache_flush_type grpc_completion_queue_thread_local_cache_flush_import;
         
     | 
| 
       80 
54 
     | 
    
         
             
            grpc_alarm_create_type grpc_alarm_create_import;
         
     | 
| 
       81 
55 
     | 
    
         
             
            grpc_alarm_set_type grpc_alarm_set_import;
         
     | 
| 
       82 
56 
     | 
    
         
             
            grpc_alarm_cancel_type grpc_alarm_cancel_import;
         
     | 
| 
         @@ -153,8 +127,14 @@ grpc_google_iam_credentials_create_type grpc_google_iam_credentials_create_impor 
     | 
|
| 
       153 
127 
     | 
    
         
             
            grpc_metadata_credentials_create_from_plugin_type grpc_metadata_credentials_create_from_plugin_import;
         
     | 
| 
       154 
128 
     | 
    
         
             
            grpc_secure_channel_create_type grpc_secure_channel_create_import;
         
     | 
| 
       155 
129 
     | 
    
         
             
            grpc_server_credentials_release_type grpc_server_credentials_release_import;
         
     | 
| 
      
 130 
     | 
    
         
            +
            grpc_ssl_server_certificate_config_create_type grpc_ssl_server_certificate_config_create_import;
         
     | 
| 
      
 131 
     | 
    
         
            +
            grpc_ssl_server_certificate_config_destroy_type grpc_ssl_server_certificate_config_destroy_import;
         
     | 
| 
       156 
132 
     | 
    
         
             
            grpc_ssl_server_credentials_create_type grpc_ssl_server_credentials_create_import;
         
     | 
| 
       157 
133 
     | 
    
         
             
            grpc_ssl_server_credentials_create_ex_type grpc_ssl_server_credentials_create_ex_import;
         
     | 
| 
      
 134 
     | 
    
         
            +
            grpc_ssl_server_credentials_create_options_using_config_type grpc_ssl_server_credentials_create_options_using_config_import;
         
     | 
| 
      
 135 
     | 
    
         
            +
            grpc_ssl_server_credentials_create_options_using_config_fetcher_type grpc_ssl_server_credentials_create_options_using_config_fetcher_import;
         
     | 
| 
      
 136 
     | 
    
         
            +
            grpc_ssl_server_credentials_options_destroy_type grpc_ssl_server_credentials_options_destroy_import;
         
     | 
| 
      
 137 
     | 
    
         
            +
            grpc_ssl_server_credentials_create_with_options_type grpc_ssl_server_credentials_create_with_options_import;
         
     | 
| 
       158 
138 
     | 
    
         
             
            grpc_server_add_secure_http2_port_type grpc_server_add_secure_http2_port_import;
         
     | 
| 
       159 
139 
     | 
    
         
             
            grpc_call_set_credentials_type grpc_call_set_credentials_import;
         
     | 
| 
       160 
140 
     | 
    
         
             
            grpc_server_credentials_set_auth_metadata_processor_type grpc_server_credentials_set_auth_metadata_processor_import;
         
     | 
| 
         @@ -192,7 +172,6 @@ grpc_slice_default_eq_impl_type grpc_slice_default_eq_impl_import; 
     | 
|
| 
       192 
172 
     | 
    
         
             
            grpc_slice_eq_type grpc_slice_eq_import;
         
     | 
| 
       193 
173 
     | 
    
         
             
            grpc_slice_cmp_type grpc_slice_cmp_import;
         
     | 
| 
       194 
174 
     | 
    
         
             
            grpc_slice_str_cmp_type grpc_slice_str_cmp_import;
         
     | 
| 
       195 
     | 
    
         
            -
            grpc_slice_buf_cmp_type grpc_slice_buf_cmp_import;
         
     | 
| 
       196 
175 
     | 
    
         
             
            grpc_slice_buf_start_eq_type grpc_slice_buf_start_eq_import;
         
     | 
| 
       197 
176 
     | 
    
         
             
            grpc_slice_rchr_type grpc_slice_rchr_import;
         
     | 
| 
       198 
177 
     | 
    
         
             
            grpc_slice_chr_type grpc_slice_chr_import;
         
     | 
| 
         @@ -330,34 +309,6 @@ gpr_sleep_until_type gpr_sleep_until_import; 
     | 
|
| 
       330 
309 
     | 
    
         
             
            gpr_timespec_to_micros_type gpr_timespec_to_micros_import;
         
     | 
| 
       331 
310 
     | 
    
         | 
| 
       332 
311 
     | 
    
         
             
            void grpc_rb_load_imports(HMODULE library) {
         
     | 
| 
       333 
     | 
    
         
            -
              census_initialize_import = (census_initialize_type) GetProcAddress(library, "census_initialize");
         
     | 
| 
       334 
     | 
    
         
            -
              census_shutdown_import = (census_shutdown_type) GetProcAddress(library, "census_shutdown");
         
     | 
| 
       335 
     | 
    
         
            -
              census_supported_import = (census_supported_type) GetProcAddress(library, "census_supported");
         
     | 
| 
       336 
     | 
    
         
            -
              census_enabled_import = (census_enabled_type) GetProcAddress(library, "census_enabled");
         
     | 
| 
       337 
     | 
    
         
            -
              census_context_create_import = (census_context_create_type) GetProcAddress(library, "census_context_create");
         
     | 
| 
       338 
     | 
    
         
            -
              census_context_destroy_import = (census_context_destroy_type) GetProcAddress(library, "census_context_destroy");
         
     | 
| 
       339 
     | 
    
         
            -
              census_context_get_status_import = (census_context_get_status_type) GetProcAddress(library, "census_context_get_status");
         
     | 
| 
       340 
     | 
    
         
            -
              census_context_initialize_iterator_import = (census_context_initialize_iterator_type) GetProcAddress(library, "census_context_initialize_iterator");
         
     | 
| 
       341 
     | 
    
         
            -
              census_context_next_tag_import = (census_context_next_tag_type) GetProcAddress(library, "census_context_next_tag");
         
     | 
| 
       342 
     | 
    
         
            -
              census_context_get_tag_import = (census_context_get_tag_type) GetProcAddress(library, "census_context_get_tag");
         
     | 
| 
       343 
     | 
    
         
            -
              census_context_encode_import = (census_context_encode_type) GetProcAddress(library, "census_context_encode");
         
     | 
| 
       344 
     | 
    
         
            -
              census_context_decode_import = (census_context_decode_type) GetProcAddress(library, "census_context_decode");
         
     | 
| 
       345 
     | 
    
         
            -
              census_trace_mask_import = (census_trace_mask_type) GetProcAddress(library, "census_trace_mask");
         
     | 
| 
       346 
     | 
    
         
            -
              census_set_trace_mask_import = (census_set_trace_mask_type) GetProcAddress(library, "census_set_trace_mask");
         
     | 
| 
       347 
     | 
    
         
            -
              census_start_rpc_op_timestamp_import = (census_start_rpc_op_timestamp_type) GetProcAddress(library, "census_start_rpc_op_timestamp");
         
     | 
| 
       348 
     | 
    
         
            -
              census_start_client_rpc_op_import = (census_start_client_rpc_op_type) GetProcAddress(library, "census_start_client_rpc_op");
         
     | 
| 
       349 
     | 
    
         
            -
              census_set_rpc_client_peer_import = (census_set_rpc_client_peer_type) GetProcAddress(library, "census_set_rpc_client_peer");
         
     | 
| 
       350 
     | 
    
         
            -
              census_start_server_rpc_op_import = (census_start_server_rpc_op_type) GetProcAddress(library, "census_start_server_rpc_op");
         
     | 
| 
       351 
     | 
    
         
            -
              census_start_op_import = (census_start_op_type) GetProcAddress(library, "census_start_op");
         
     | 
| 
       352 
     | 
    
         
            -
              census_end_op_import = (census_end_op_type) GetProcAddress(library, "census_end_op");
         
     | 
| 
       353 
     | 
    
         
            -
              census_trace_print_import = (census_trace_print_type) GetProcAddress(library, "census_trace_print");
         
     | 
| 
       354 
     | 
    
         
            -
              census_trace_scan_start_import = (census_trace_scan_start_type) GetProcAddress(library, "census_trace_scan_start");
         
     | 
| 
       355 
     | 
    
         
            -
              census_get_trace_record_import = (census_get_trace_record_type) GetProcAddress(library, "census_get_trace_record");
         
     | 
| 
       356 
     | 
    
         
            -
              census_trace_scan_end_import = (census_trace_scan_end_type) GetProcAddress(library, "census_trace_scan_end");
         
     | 
| 
       357 
     | 
    
         
            -
              census_define_resource_import = (census_define_resource_type) GetProcAddress(library, "census_define_resource");
         
     | 
| 
       358 
     | 
    
         
            -
              census_delete_resource_import = (census_delete_resource_type) GetProcAddress(library, "census_delete_resource");
         
     | 
| 
       359 
     | 
    
         
            -
              census_resource_id_import = (census_resource_id_type) GetProcAddress(library, "census_resource_id");
         
     | 
| 
       360 
     | 
    
         
            -
              census_record_values_import = (census_record_values_type) GetProcAddress(library, "census_record_values");
         
     | 
| 
       361 
312 
     | 
    
         
             
              grpc_compression_algorithm_parse_import = (grpc_compression_algorithm_parse_type) GetProcAddress(library, "grpc_compression_algorithm_parse");
         
     | 
| 
       362 
313 
     | 
    
         
             
              grpc_compression_algorithm_name_import = (grpc_compression_algorithm_name_type) GetProcAddress(library, "grpc_compression_algorithm_name");
         
     | 
| 
       363 
314 
     | 
    
         
             
              grpc_stream_compression_algorithm_name_import = (grpc_stream_compression_algorithm_name_type) GetProcAddress(library, "grpc_stream_compression_algorithm_name");
         
     | 
| 
         @@ -385,6 +336,8 @@ void grpc_rb_load_imports(HMODULE library) { 
     | 
|
| 
       385 
336 
     | 
    
         
             
              grpc_completion_queue_pluck_import = (grpc_completion_queue_pluck_type) GetProcAddress(library, "grpc_completion_queue_pluck");
         
     | 
| 
       386 
337 
     | 
    
         
             
              grpc_completion_queue_shutdown_import = (grpc_completion_queue_shutdown_type) GetProcAddress(library, "grpc_completion_queue_shutdown");
         
     | 
| 
       387 
338 
     | 
    
         
             
              grpc_completion_queue_destroy_import = (grpc_completion_queue_destroy_type) GetProcAddress(library, "grpc_completion_queue_destroy");
         
     | 
| 
      
 339 
     | 
    
         
            +
              grpc_completion_queue_thread_local_cache_init_import = (grpc_completion_queue_thread_local_cache_init_type) GetProcAddress(library, "grpc_completion_queue_thread_local_cache_init");
         
     | 
| 
      
 340 
     | 
    
         
            +
              grpc_completion_queue_thread_local_cache_flush_import = (grpc_completion_queue_thread_local_cache_flush_type) GetProcAddress(library, "grpc_completion_queue_thread_local_cache_flush");
         
     | 
| 
       388 
341 
     | 
    
         
             
              grpc_alarm_create_import = (grpc_alarm_create_type) GetProcAddress(library, "grpc_alarm_create");
         
     | 
| 
       389 
342 
     | 
    
         
             
              grpc_alarm_set_import = (grpc_alarm_set_type) GetProcAddress(library, "grpc_alarm_set");
         
     | 
| 
       390 
343 
     | 
    
         
             
              grpc_alarm_cancel_import = (grpc_alarm_cancel_type) GetProcAddress(library, "grpc_alarm_cancel");
         
     | 
| 
         @@ -461,8 +414,14 @@ void grpc_rb_load_imports(HMODULE library) { 
     | 
|
| 
       461 
414 
     | 
    
         
             
              grpc_metadata_credentials_create_from_plugin_import = (grpc_metadata_credentials_create_from_plugin_type) GetProcAddress(library, "grpc_metadata_credentials_create_from_plugin");
         
     | 
| 
       462 
415 
     | 
    
         
             
              grpc_secure_channel_create_import = (grpc_secure_channel_create_type) GetProcAddress(library, "grpc_secure_channel_create");
         
     | 
| 
       463 
416 
     | 
    
         
             
              grpc_server_credentials_release_import = (grpc_server_credentials_release_type) GetProcAddress(library, "grpc_server_credentials_release");
         
     | 
| 
      
 417 
     | 
    
         
            +
              grpc_ssl_server_certificate_config_create_import = (grpc_ssl_server_certificate_config_create_type) GetProcAddress(library, "grpc_ssl_server_certificate_config_create");
         
     | 
| 
      
 418 
     | 
    
         
            +
              grpc_ssl_server_certificate_config_destroy_import = (grpc_ssl_server_certificate_config_destroy_type) GetProcAddress(library, "grpc_ssl_server_certificate_config_destroy");
         
     | 
| 
       464 
419 
     | 
    
         
             
              grpc_ssl_server_credentials_create_import = (grpc_ssl_server_credentials_create_type) GetProcAddress(library, "grpc_ssl_server_credentials_create");
         
     | 
| 
       465 
420 
     | 
    
         
             
              grpc_ssl_server_credentials_create_ex_import = (grpc_ssl_server_credentials_create_ex_type) GetProcAddress(library, "grpc_ssl_server_credentials_create_ex");
         
     | 
| 
      
 421 
     | 
    
         
            +
              grpc_ssl_server_credentials_create_options_using_config_import = (grpc_ssl_server_credentials_create_options_using_config_type) GetProcAddress(library, "grpc_ssl_server_credentials_create_options_using_config");
         
     | 
| 
      
 422 
     | 
    
         
            +
              grpc_ssl_server_credentials_create_options_using_config_fetcher_import = (grpc_ssl_server_credentials_create_options_using_config_fetcher_type) GetProcAddress(library, "grpc_ssl_server_credentials_create_options_using_config_fetcher");
         
     | 
| 
      
 423 
     | 
    
         
            +
              grpc_ssl_server_credentials_options_destroy_import = (grpc_ssl_server_credentials_options_destroy_type) GetProcAddress(library, "grpc_ssl_server_credentials_options_destroy");
         
     | 
| 
      
 424 
     | 
    
         
            +
              grpc_ssl_server_credentials_create_with_options_import = (grpc_ssl_server_credentials_create_with_options_type) GetProcAddress(library, "grpc_ssl_server_credentials_create_with_options");
         
     | 
| 
       466 
425 
     | 
    
         
             
              grpc_server_add_secure_http2_port_import = (grpc_server_add_secure_http2_port_type) GetProcAddress(library, "grpc_server_add_secure_http2_port");
         
     | 
| 
       467 
426 
     | 
    
         
             
              grpc_call_set_credentials_import = (grpc_call_set_credentials_type) GetProcAddress(library, "grpc_call_set_credentials");
         
     | 
| 
       468 
427 
     | 
    
         
             
              grpc_server_credentials_set_auth_metadata_processor_import = (grpc_server_credentials_set_auth_metadata_processor_type) GetProcAddress(library, "grpc_server_credentials_set_auth_metadata_processor");
         
     | 
| 
         @@ -500,7 +459,6 @@ void grpc_rb_load_imports(HMODULE library) { 
     | 
|
| 
       500 
459 
     | 
    
         
             
              grpc_slice_eq_import = (grpc_slice_eq_type) GetProcAddress(library, "grpc_slice_eq");
         
     | 
| 
       501 
460 
     | 
    
         
             
              grpc_slice_cmp_import = (grpc_slice_cmp_type) GetProcAddress(library, "grpc_slice_cmp");
         
     | 
| 
       502 
461 
     | 
    
         
             
              grpc_slice_str_cmp_import = (grpc_slice_str_cmp_type) GetProcAddress(library, "grpc_slice_str_cmp");
         
     | 
| 
       503 
     | 
    
         
            -
              grpc_slice_buf_cmp_import = (grpc_slice_buf_cmp_type) GetProcAddress(library, "grpc_slice_buf_cmp");
         
     | 
| 
       504 
462 
     | 
    
         
             
              grpc_slice_buf_start_eq_import = (grpc_slice_buf_start_eq_type) GetProcAddress(library, "grpc_slice_buf_start_eq");
         
     | 
| 
       505 
463 
     | 
    
         
             
              grpc_slice_rchr_import = (grpc_slice_rchr_type) GetProcAddress(library, "grpc_slice_rchr");
         
     | 
| 
       506 
464 
     | 
    
         
             
              grpc_slice_chr_import = (grpc_slice_chr_type) GetProcAddress(library, "grpc_slice_chr");
         
     |