grpc 0.13.1-x86-mingw32 → 0.14.1.pre1-x86-mingw32
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/grpc_c.32.ruby +0 -0
 - data/grpc_c.64.ruby +0 -0
 - data/src/ruby/ext/grpc/extconf.rb +14 -20
 - data/src/ruby/ext/grpc/rb_byte_buffer.c +2 -3
 - data/src/ruby/ext/grpc/rb_call.c +37 -4
 - data/src/ruby/ext/grpc/rb_call_credentials.c +13 -3
 - data/src/ruby/ext/grpc/rb_channel.c +2 -3
 - data/src/ruby/ext/grpc/rb_channel_args.c +2 -3
 - data/src/ruby/ext/grpc/rb_channel_credentials.c +31 -3
 - data/src/ruby/ext/grpc/rb_completion_queue.c +2 -2
 - data/src/ruby/ext/grpc/rb_event_thread.c +1 -1
 - data/src/ruby/ext/grpc/rb_grpc.c +4 -2
 - data/src/ruby/ext/grpc/rb_grpc_imports.generated.c +8 -0
 - data/src/ruby/ext/grpc/rb_grpc_imports.generated.h +14 -2
 - data/src/ruby/ext/grpc/rb_server.c +2 -3
 - data/src/ruby/ext/grpc/rb_server_credentials.c +16 -13
 - data/src/ruby/ext/grpc/rb_signal.c +70 -0
 - data/src/ruby/ext/grpc/rb_signal.h +39 -0
 - data/src/ruby/lib/grpc.rb +21 -13
 - data/src/ruby/lib/grpc/2.0/grpc_c.so +0 -0
 - data/src/ruby/lib/grpc/2.1/grpc_c.so +0 -0
 - data/src/ruby/lib/grpc/2.2/grpc_c.so +0 -0
 - data/src/ruby/lib/grpc/2.3/grpc_c.so +0 -0
 - data/src/ruby/lib/grpc/core/time_consts.rb +2 -2
 - data/src/ruby/lib/grpc/errors.rb +2 -2
 - data/src/ruby/lib/grpc/generic/active_call.rb +10 -3
 - data/src/ruby/lib/grpc/generic/bidi_call.rb +2 -2
 - data/src/ruby/lib/grpc/generic/client_stub.rb +10 -7
 - data/src/ruby/lib/grpc/generic/rpc_desc.rb +2 -2
 - data/src/ruby/lib/grpc/generic/rpc_server.rb +21 -61
 - data/src/ruby/lib/grpc/generic/service.rb +5 -15
 - data/src/ruby/lib/grpc/grpc.rb +3 -3
 - data/src/ruby/lib/grpc/grpc_c.so +0 -0
 - data/src/ruby/{bin/interop/interop_client.rb → lib/grpc/signals.rb} +39 -21
 - data/src/ruby/lib/grpc/version.rb +2 -2
 - data/src/ruby/pb/generate_proto_ruby.sh +9 -2
 - data/src/ruby/pb/grpc/health/checker.rb +1 -1
 - data/src/ruby/pb/grpc/testing/duplicate/echo_duplicate_services.rb +28 -0
 - data/src/ruby/pb/grpc/testing/metrics.rb +28 -0
 - data/src/ruby/pb/grpc/testing/metrics_services.rb +27 -0
 - data/src/ruby/pb/test/client.rb +12 -23
 - data/src/ruby/pb/test/server.rb +1 -1
 - data/src/ruby/spec/client_server_spec.rb +1 -1
 - data/src/ruby/spec/generic/client_stub_spec.rb +18 -17
 - data/src/ruby/spec/generic/rpc_server_spec.rb +23 -7
 - data/src/ruby/spec/generic/service_spec.rb +0 -69
 - data/src/ruby/{bin/interop/interop_server.rb → spec/pb/duplicate/codegen_spec.rb} +41 -20
 - data/src/ruby/spec/pb/health/checker_spec.rb +1 -1
 - metadata +27 -15
 - data/src/ruby/bin/grpc_ruby_interop_client +0 -33
 - data/src/ruby/bin/grpc_ruby_interop_server +0 -33
 
    
        checksums.yaml
    CHANGED
    
    | 
         @@ -1,7 +1,7 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            ---
         
     | 
| 
       2 
2 
     | 
    
         
             
            SHA1:
         
     | 
| 
       3 
     | 
    
         
            -
              metadata.gz:  
     | 
| 
       4 
     | 
    
         
            -
              data.tar.gz:  
     | 
| 
      
 3 
     | 
    
         
            +
              metadata.gz: a0c8edf85d93c210f1ab14fb441a1b459ed5bf59
         
     | 
| 
      
 4 
     | 
    
         
            +
              data.tar.gz: b48261470cee2857ec5f826ae56755c133198e72
         
     | 
| 
       5 
5 
     | 
    
         
             
            SHA512:
         
     | 
| 
       6 
     | 
    
         
            -
              metadata.gz:  
     | 
| 
       7 
     | 
    
         
            -
              data.tar.gz:  
     | 
| 
      
 6 
     | 
    
         
            +
              metadata.gz: e0b1db1f173016c499b68e6a0cce8cbce6b601f32427d14d3c60f864ca12b9444bdb47028f5dbcca0147c8b2e0ed8cf33089883efd03d8ab11842601586ef0e4
         
     | 
| 
      
 7 
     | 
    
         
            +
              data.tar.gz: 50dcc4bf4706b3adbcfd0104915a4a8abeec851b8596e42cfc6f5b0c32765579797b310bacce213ccb5e11dc8a0bb536324332733037895690e92e5fd424bed2
         
     | 
    
        data/grpc_c.32.ruby
    CHANGED
    
    | 
         Binary file 
     | 
    
        data/grpc_c.64.ruby
    CHANGED
    
    | 
         Binary file 
     | 
| 
         @@ -1,4 +1,4 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            # Copyright 2015 
     | 
| 
      
 1 
     | 
    
         
            +
            # Copyright 2015, Google Inc.
         
     | 
| 
       2 
2 
     | 
    
         
             
            # All rights reserved.
         
     | 
| 
       3 
3 
     | 
    
         
             
            #
         
     | 
| 
       4 
4 
     | 
    
         
             
            # Redistribution and use in source and binary forms, with or without
         
     | 
| 
         @@ -60,31 +60,25 @@ grpc_root = File.expand_path(File.join(File.dirname(__FILE__), '../../../..')) 
     | 
|
| 
       60 
60 
     | 
    
         | 
| 
       61 
61 
     | 
    
         
             
            grpc_config = ENV['GRPC_CONFIG'] || 'opt'
         
     | 
| 
       62 
62 
     | 
    
         | 
| 
       63 
     | 
    
         
            -
            if ENV.key?('GRPC_LIB_DIR')
         
     | 
| 
       64 
     | 
    
         
            -
              grpc_lib_dir = File.join(grpc_root, ENV['GRPC_LIB_DIR'])
         
     | 
| 
       65 
     | 
    
         
            -
            else
         
     | 
| 
       66 
     | 
    
         
            -
              grpc_lib_dir = File.join(grpc_root, 'libs', grpc_config)
         
     | 
| 
       67 
     | 
    
         
            -
            end
         
     | 
| 
       68 
     | 
    
         
            -
             
     | 
| 
       69 
63 
     | 
    
         
             
            ENV['MACOSX_DEPLOYMENT_TARGET'] = '10.7'
         
     | 
| 
       70 
64 
     | 
    
         | 
| 
       71 
     | 
    
         
            -
             
     | 
| 
       72 
     | 
    
         
            -
             
     | 
| 
       73 
     | 
    
         
            -
             
     | 
| 
       74 
     | 
    
         
            -
              ENV['LD'] = ENV['CC']
         
     | 
| 
      
 65 
     | 
    
         
            +
            ENV['AR'] = RbConfig::CONFIG['AR'] + ' rcs'
         
     | 
| 
      
 66 
     | 
    
         
            +
            ENV['CC'] = RbConfig::CONFIG['CC']
         
     | 
| 
      
 67 
     | 
    
         
            +
            ENV['LD'] = ENV['CC']
         
     | 
| 
       75 
68 
     | 
    
         | 
| 
       76 
     | 
    
         
            -
             
     | 
| 
      
 69 
     | 
    
         
            +
            ENV['AR'] = 'libtool -o' if RUBY_PLATFORM =~ /darwin/
         
     | 
| 
       77 
70 
     | 
    
         | 
| 
       78 
     | 
    
         
            -
             
     | 
| 
       79 
     | 
    
         
            -
             
     | 
| 
       80 
     | 
    
         
            -
             
     | 
| 
       81 
     | 
    
         
            -
             
     | 
| 
       82 
     | 
    
         
            -
             
     | 
| 
      
 71 
     | 
    
         
            +
            ENV['EMBED_OPENSSL'] = 'true'
         
     | 
| 
      
 72 
     | 
    
         
            +
            ENV['EMBED_ZLIB'] = 'true'
         
     | 
| 
      
 73 
     | 
    
         
            +
            ENV['ARCH_FLAGS'] = RbConfig::CONFIG['ARCH_FLAG']
         
     | 
| 
      
 74 
     | 
    
         
            +
            ENV['ARCH_FLAGS'] = '-arch i386 -arch x86_64' if RUBY_PLATFORM =~ /darwin/
         
     | 
| 
      
 75 
     | 
    
         
            +
            ENV['CFLAGS'] = '-DGPR_BACKWARDS_COMPATIBILITY_MODE'
         
     | 
| 
       83 
76 
     | 
    
         | 
| 
       84 
     | 
    
         
            -
             
     | 
| 
       85 
     | 
    
         
            -
             
     | 
| 
       86 
     | 
    
         
            -
             
     | 
| 
      
 77 
     | 
    
         
            +
            output_dir = File.expand_path(RbConfig::CONFIG['topdir'])
         
     | 
| 
      
 78 
     | 
    
         
            +
            grpc_lib_dir = File.join(output_dir, 'libs', grpc_config)
         
     | 
| 
      
 79 
     | 
    
         
            +
            ENV['BUILDDIR'] = output_dir
         
     | 
| 
       87 
80 
     | 
    
         | 
| 
      
 81 
     | 
    
         
            +
            unless windows
         
     | 
| 
       88 
82 
     | 
    
         
             
              puts 'Building internal gRPC into ' + grpc_lib_dir
         
     | 
| 
       89 
83 
     | 
    
         
             
              system("make -j -C #{grpc_root} #{grpc_lib_dir}/libgrpc.a CONFIG=#{grpc_config}")
         
     | 
| 
       90 
84 
     | 
    
         
             
              exit 1 unless $? == 0
         
     | 
| 
         @@ -1,6 +1,6 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            /*
         
     | 
| 
       2 
2 
     | 
    
         
             
             *
         
     | 
| 
       3 
     | 
    
         
            -
             * Copyright 2015 
     | 
| 
      
 3 
     | 
    
         
            +
             * Copyright 2015, Google Inc.
         
     | 
| 
       4 
4 
     | 
    
         
             
             * All rights reserved.
         
     | 
| 
       5 
5 
     | 
    
         
             
             *
         
     | 
| 
       6 
6 
     | 
    
         
             
             * Redistribution and use in source and binary forms, with or without
         
     | 
| 
         @@ -32,11 +32,10 @@ 
     | 
|
| 
       32 
32 
     | 
    
         
             
             */
         
     | 
| 
       33 
33 
     | 
    
         | 
| 
       34 
34 
     | 
    
         
             
            #include <ruby/ruby.h>
         
     | 
| 
      
 35 
     | 
    
         
            +
             
     | 
| 
       35 
36 
     | 
    
         
             
            #include "rb_grpc_imports.generated.h"
         
     | 
| 
       36 
37 
     | 
    
         
             
            #include "rb_byte_buffer.h"
         
     | 
| 
       37 
38 
     | 
    
         | 
| 
       38 
     | 
    
         
            -
            #include <ruby/ruby.h>
         
     | 
| 
       39 
     | 
    
         
            -
             
     | 
| 
       40 
39 
     | 
    
         
             
            #include <grpc/grpc.h>
         
     | 
| 
       41 
40 
     | 
    
         
             
            #include <grpc/byte_buffer_reader.h>
         
     | 
| 
       42 
41 
     | 
    
         
             
            #include <grpc/support/slice.h>
         
     | 
    
        data/src/ruby/ext/grpc/rb_call.c
    CHANGED
    
    | 
         @@ -1,6 +1,6 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            /*
         
     | 
| 
       2 
2 
     | 
    
         
             
             *
         
     | 
| 
       3 
     | 
    
         
            -
             * Copyright 2015 
     | 
| 
      
 3 
     | 
    
         
            +
             * Copyright 2015, Google Inc.
         
     | 
| 
       4 
4 
     | 
    
         
             
             * All rights reserved.
         
     | 
| 
       5 
5 
     | 
    
         
             
             *
         
     | 
| 
       6 
6 
     | 
    
         
             
             * Redistribution and use in source and binary forms, with or without
         
     | 
| 
         @@ -32,11 +32,10 @@ 
     | 
|
| 
       32 
32 
     | 
    
         
             
             */
         
     | 
| 
       33 
33 
     | 
    
         | 
| 
       34 
34 
     | 
    
         
             
            #include <ruby/ruby.h>
         
     | 
| 
      
 35 
     | 
    
         
            +
             
     | 
| 
       35 
36 
     | 
    
         
             
            #include "rb_grpc_imports.generated.h"
         
     | 
| 
       36 
37 
     | 
    
         
             
            #include "rb_call.h"
         
     | 
| 
       37 
38 
     | 
    
         | 
| 
       38 
     | 
    
         
            -
            #include <ruby/ruby.h>
         
     | 
| 
       39 
     | 
    
         
            -
             
     | 
| 
       40 
39 
     | 
    
         
             
            #include <grpc/grpc.h>
         
     | 
| 
       41 
40 
     | 
    
         
             
            #include <grpc/support/alloc.h>
         
     | 
| 
       42 
41 
     | 
    
         | 
| 
         @@ -214,6 +213,35 @@ static VALUE grpc_rb_call_get_peer(VALUE self) { 
     | 
|
| 
       214 
213 
     | 
    
         
             
              return res;
         
     | 
| 
       215 
214 
     | 
    
         
             
            }
         
     | 
| 
       216 
215 
     | 
    
         | 
| 
      
 216 
     | 
    
         
            +
            /* Called to obtain the x509 cert of an authenticated peer. */
         
     | 
| 
      
 217 
     | 
    
         
            +
            static VALUE grpc_rb_call_get_peer_cert(VALUE self) {
         
     | 
| 
      
 218 
     | 
    
         
            +
              grpc_call *call = NULL;
         
     | 
| 
      
 219 
     | 
    
         
            +
              VALUE res = Qnil;
         
     | 
| 
      
 220 
     | 
    
         
            +
              grpc_auth_context *ctx = NULL;
         
     | 
| 
      
 221 
     | 
    
         
            +
              TypedData_Get_Struct(self, grpc_call, &grpc_call_data_type, call);
         
     | 
| 
      
 222 
     | 
    
         
            +
             
     | 
| 
      
 223 
     | 
    
         
            +
              ctx = grpc_call_auth_context(call);
         
     | 
| 
      
 224 
     | 
    
         
            +
             
     | 
| 
      
 225 
     | 
    
         
            +
              if (!ctx || !grpc_auth_context_peer_is_authenticated(ctx)) {
         
     | 
| 
      
 226 
     | 
    
         
            +
                return Qnil;
         
     | 
| 
      
 227 
     | 
    
         
            +
              }
         
     | 
| 
      
 228 
     | 
    
         
            +
             
     | 
| 
      
 229 
     | 
    
         
            +
              {
         
     | 
| 
      
 230 
     | 
    
         
            +
                grpc_auth_property_iterator it =
         
     | 
| 
      
 231 
     | 
    
         
            +
                    grpc_auth_context_find_properties_by_name(ctx, GRPC_X509_PEM_CERT_PROPERTY_NAME);
         
     | 
| 
      
 232 
     | 
    
         
            +
                const grpc_auth_property *prop = grpc_auth_property_iterator_next(&it);
         
     | 
| 
      
 233 
     | 
    
         
            +
                if (prop == NULL) {
         
     | 
| 
      
 234 
     | 
    
         
            +
                  return Qnil;
         
     | 
| 
      
 235 
     | 
    
         
            +
                }
         
     | 
| 
      
 236 
     | 
    
         
            +
             
     | 
| 
      
 237 
     | 
    
         
            +
                res = rb_str_new2(prop->value);
         
     | 
| 
      
 238 
     | 
    
         
            +
              }
         
     | 
| 
      
 239 
     | 
    
         
            +
             
     | 
| 
      
 240 
     | 
    
         
            +
              grpc_auth_context_release(ctx);
         
     | 
| 
      
 241 
     | 
    
         
            +
             
     | 
| 
      
 242 
     | 
    
         
            +
              return res;
         
     | 
| 
      
 243 
     | 
    
         
            +
            }
         
     | 
| 
      
 244 
     | 
    
         
            +
             
     | 
| 
       217 
245 
     | 
    
         
             
            /*
         
     | 
| 
       218 
246 
     | 
    
         
             
              call-seq:
         
     | 
| 
       219 
247 
     | 
    
         
             
              status = call.status
         
     | 
| 
         @@ -359,7 +387,7 @@ static int grpc_rb_md_ary_fill_hash_cb(VALUE key, VALUE val, VALUE md_ary_obj) { 
     | 
|
| 
       359 
387 
     | 
    
         
             
                  md_ary->metadata[md_ary->count].value_length = value_len;
         
     | 
| 
       360 
388 
     | 
    
         
             
                  md_ary->count += 1;
         
     | 
| 
       361 
389 
     | 
    
         
             
                }
         
     | 
| 
       362 
     | 
    
         
            -
              } else {
         
     | 
| 
      
 390 
     | 
    
         
            +
              } else if (TYPE(val) == T_STRING) {
         
     | 
| 
       363 
391 
     | 
    
         
             
                value_str = RSTRING_PTR(val);
         
     | 
| 
       364 
392 
     | 
    
         
             
                value_len = RSTRING_LEN(val);
         
     | 
| 
       365 
393 
     | 
    
         
             
                if (!grpc_is_binary_header(key_str, key_len) &&
         
     | 
| 
         @@ -373,6 +401,10 @@ static int grpc_rb_md_ary_fill_hash_cb(VALUE key, VALUE val, VALUE md_ary_obj) { 
     | 
|
| 
       373 
401 
     | 
    
         
             
                md_ary->metadata[md_ary->count].value = value_str;
         
     | 
| 
       374 
402 
     | 
    
         
             
                md_ary->metadata[md_ary->count].value_length = value_len;
         
     | 
| 
       375 
403 
     | 
    
         
             
                md_ary->count += 1;
         
     | 
| 
      
 404 
     | 
    
         
            +
              } else {
         
     | 
| 
      
 405 
     | 
    
         
            +
                rb_raise(rb_eArgError,
         
     | 
| 
      
 406 
     | 
    
         
            +
                           "Header values must be of type string or array");
         
     | 
| 
      
 407 
     | 
    
         
            +
                return ST_STOP;
         
     | 
| 
       376 
408 
     | 
    
         
             
              }
         
     | 
| 
       377 
409 
     | 
    
         | 
| 
       378 
410 
     | 
    
         
             
              return ST_CONTINUE;
         
     | 
| 
         @@ -857,6 +889,7 @@ void Init_grpc_call() { 
     | 
|
| 
       857 
889 
     | 
    
         
             
              rb_define_method(grpc_rb_cCall, "run_batch", grpc_rb_call_run_batch, 4);
         
     | 
| 
       858 
890 
     | 
    
         
             
              rb_define_method(grpc_rb_cCall, "cancel", grpc_rb_call_cancel, 0);
         
     | 
| 
       859 
891 
     | 
    
         
             
              rb_define_method(grpc_rb_cCall, "peer", grpc_rb_call_get_peer, 0);
         
     | 
| 
      
 892 
     | 
    
         
            +
              rb_define_method(grpc_rb_cCall, "peer_cert", grpc_rb_call_get_peer_cert, 0);
         
     | 
| 
       860 
893 
     | 
    
         
             
              rb_define_method(grpc_rb_cCall, "status", grpc_rb_call_get_status, 0);
         
     | 
| 
       861 
894 
     | 
    
         
             
              rb_define_method(grpc_rb_cCall, "status=", grpc_rb_call_set_status, 1);
         
     | 
| 
       862 
895 
     | 
    
         
             
              rb_define_method(grpc_rb_cCall, "metadata", grpc_rb_call_get_metadata, 0);
         
     | 
| 
         @@ -1,6 +1,6 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            /*
         
     | 
| 
       2 
2 
     | 
    
         
             
             *
         
     | 
| 
       3 
     | 
    
         
            -
             * Copyright 2015 
     | 
| 
      
 3 
     | 
    
         
            +
             * Copyright 2015, Google Inc.
         
     | 
| 
       4 
4 
     | 
    
         
             
             * All rights reserved.
         
     | 
| 
       5 
5 
     | 
    
         
             
             *
         
     | 
| 
       6 
6 
     | 
    
         
             
             * Redistribution and use in source and binary forms, with or without
         
     | 
| 
         @@ -32,15 +32,16 @@ 
     | 
|
| 
       32 
32 
     | 
    
         
             
             */
         
     | 
| 
       33 
33 
     | 
    
         | 
| 
       34 
34 
     | 
    
         
             
            #include <ruby/ruby.h>
         
     | 
| 
      
 35 
     | 
    
         
            +
             
     | 
| 
       35 
36 
     | 
    
         
             
            #include "rb_grpc_imports.generated.h"
         
     | 
| 
       36 
37 
     | 
    
         
             
            #include "rb_call_credentials.h"
         
     | 
| 
       37 
38 
     | 
    
         | 
| 
       38 
     | 
    
         
            -
            #include <ruby/ruby.h>
         
     | 
| 
       39 
39 
     | 
    
         
             
            #include <ruby/thread.h>
         
     | 
| 
       40 
40 
     | 
    
         | 
| 
       41 
41 
     | 
    
         
             
            #include <grpc/grpc.h>
         
     | 
| 
       42 
42 
     | 
    
         
             
            #include <grpc/grpc_security.h>
         
     | 
| 
       43 
43 
     | 
    
         
             
            #include <grpc/support/alloc.h>
         
     | 
| 
      
 44 
     | 
    
         
            +
            #include <grpc/support/log.h>
         
     | 
| 
       44 
45 
     | 
    
         | 
| 
       45 
46 
     | 
    
         
             
            #include "rb_call.h"
         
     | 
| 
       46 
47 
     | 
    
         
             
            #include "rb_event_thread.h"
         
     | 
| 
         @@ -81,14 +82,23 @@ static VALUE grpc_rb_call_credentials_callback(VALUE callback_args) { 
     | 
|
| 
       81 
82 
     | 
    
         
             
            static VALUE grpc_rb_call_credentials_callback_rescue(VALUE args,
         
     | 
| 
       82 
83 
     | 
    
         
             
                                                                  VALUE exception_object) {
         
     | 
| 
       83 
84 
     | 
    
         
             
              VALUE result = rb_hash_new();
         
     | 
| 
      
 85 
     | 
    
         
            +
              VALUE backtrace = rb_funcall(
         
     | 
| 
      
 86 
     | 
    
         
            +
                  rb_funcall(exception_object, rb_intern("backtrace"), 0),
         
     | 
| 
      
 87 
     | 
    
         
            +
                  rb_intern("join"),
         
     | 
| 
      
 88 
     | 
    
         
            +
                  1, rb_str_new2("\n\tfrom "));
         
     | 
| 
      
 89 
     | 
    
         
            +
              VALUE rb_exception_info = rb_funcall(exception_object, rb_intern("to_s"), 0);
         
     | 
| 
      
 90 
     | 
    
         
            +
              const char *exception_classname = rb_obj_classname(exception_object);
         
     | 
| 
       84 
91 
     | 
    
         
             
              (void)args;
         
     | 
| 
      
 92 
     | 
    
         
            +
              gpr_log(GPR_INFO, "Call credentials callback failed: %s: %s\n%s",
         
     | 
| 
      
 93 
     | 
    
         
            +
                      exception_classname, StringValueCStr(rb_exception_info),
         
     | 
| 
      
 94 
     | 
    
         
            +
                      StringValueCStr(backtrace));
         
     | 
| 
       85 
95 
     | 
    
         
             
              rb_hash_aset(result, rb_str_new2("metadata"), Qnil);
         
     | 
| 
       86 
96 
     | 
    
         
             
              /* Currently only gives the exception class name. It should be possible get
         
     | 
| 
       87 
97 
     | 
    
         
             
                 more details */
         
     | 
| 
       88 
98 
     | 
    
         
             
              rb_hash_aset(result, rb_str_new2("status"),
         
     | 
| 
       89 
99 
     | 
    
         
             
                           INT2NUM(GRPC_STATUS_PERMISSION_DENIED));
         
     | 
| 
       90 
100 
     | 
    
         
             
              rb_hash_aset(result, rb_str_new2("details"),
         
     | 
| 
       91 
     | 
    
         
            -
                           rb_str_new2( 
     | 
| 
      
 101 
     | 
    
         
            +
                           rb_str_new2(exception_classname));
         
     | 
| 
       92 
102 
     | 
    
         
             
              return result;
         
     | 
| 
       93 
103 
     | 
    
         
             
            }
         
     | 
| 
       94 
104 
     | 
    
         | 
| 
         @@ -1,6 +1,6 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            /*
         
     | 
| 
       2 
2 
     | 
    
         
             
             *
         
     | 
| 
       3 
     | 
    
         
            -
             * Copyright 2015 
     | 
| 
      
 3 
     | 
    
         
            +
             * Copyright 2015, Google Inc.
         
     | 
| 
       4 
4 
     | 
    
         
             
             * All rights reserved.
         
     | 
| 
       5 
5 
     | 
    
         
             
             *
         
     | 
| 
       6 
6 
     | 
    
         
             
             * Redistribution and use in source and binary forms, with or without
         
     | 
| 
         @@ -32,11 +32,10 @@ 
     | 
|
| 
       32 
32 
     | 
    
         
             
             */
         
     | 
| 
       33 
33 
     | 
    
         | 
| 
       34 
34 
     | 
    
         
             
            #include <ruby/ruby.h>
         
     | 
| 
      
 35 
     | 
    
         
            +
             
     | 
| 
       35 
36 
     | 
    
         
             
            #include "rb_grpc_imports.generated.h"
         
     | 
| 
       36 
37 
     | 
    
         
             
            #include "rb_channel.h"
         
     | 
| 
       37 
38 
     | 
    
         | 
| 
       38 
     | 
    
         
            -
            #include <ruby/ruby.h>
         
     | 
| 
       39 
     | 
    
         
            -
             
     | 
| 
       40 
39 
     | 
    
         
             
            #include <grpc/grpc.h>
         
     | 
| 
       41 
40 
     | 
    
         
             
            #include <grpc/grpc_security.h>
         
     | 
| 
       42 
41 
     | 
    
         
             
            #include <grpc/support/alloc.h>
         
     | 
| 
         @@ -1,6 +1,6 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            /*
         
     | 
| 
       2 
2 
     | 
    
         
             
             *
         
     | 
| 
       3 
     | 
    
         
            -
             * Copyright 2015 
     | 
| 
      
 3 
     | 
    
         
            +
             * Copyright 2015, Google Inc.
         
     | 
| 
       4 
4 
     | 
    
         
             
             * All rights reserved.
         
     | 
| 
       5 
5 
     | 
    
         
             
             *
         
     | 
| 
       6 
6 
     | 
    
         
             
             * Redistribution and use in source and binary forms, with or without
         
     | 
| 
         @@ -32,11 +32,10 @@ 
     | 
|
| 
       32 
32 
     | 
    
         
             
             */
         
     | 
| 
       33 
33 
     | 
    
         | 
| 
       34 
34 
     | 
    
         
             
            #include <ruby/ruby.h>
         
     | 
| 
      
 35 
     | 
    
         
            +
             
     | 
| 
       35 
36 
     | 
    
         
             
            #include "rb_grpc_imports.generated.h"
         
     | 
| 
       36 
37 
     | 
    
         
             
            #include "rb_channel_args.h"
         
     | 
| 
       37 
38 
     | 
    
         | 
| 
       38 
     | 
    
         
            -
            #include <ruby/ruby.h>
         
     | 
| 
       39 
     | 
    
         
            -
             
     | 
| 
       40 
39 
     | 
    
         
             
            #include <grpc/grpc.h>
         
     | 
| 
       41 
40 
     | 
    
         | 
| 
       42 
41 
     | 
    
         
             
            #include "rb_grpc.h"
         
     | 
| 
         @@ -1,6 +1,6 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            /*
         
     | 
| 
       2 
2 
     | 
    
         
             
             *
         
     | 
| 
       3 
     | 
    
         
            -
             * Copyright 2015 
     | 
| 
      
 3 
     | 
    
         
            +
             * Copyright 2015, Google Inc.
         
     | 
| 
       4 
4 
     | 
    
         
             
             * All rights reserved.
         
     | 
| 
       5 
5 
     | 
    
         
             
             *
         
     | 
| 
       6 
6 
     | 
    
         
             
             * Redistribution and use in source and binary forms, with or without
         
     | 
| 
         @@ -32,13 +32,15 @@ 
     | 
|
| 
       32 
32 
     | 
    
         
             
             */
         
     | 
| 
       33 
33 
     | 
    
         | 
| 
       34 
34 
     | 
    
         
             
            #include <ruby/ruby.h>
         
     | 
| 
      
 35 
     | 
    
         
            +
             
     | 
| 
      
 36 
     | 
    
         
            +
            #include <string.h>
         
     | 
| 
      
 37 
     | 
    
         
            +
             
     | 
| 
       35 
38 
     | 
    
         
             
            #include "rb_grpc_imports.generated.h"
         
     | 
| 
       36 
39 
     | 
    
         
             
            #include "rb_channel_credentials.h"
         
     | 
| 
       37 
40 
     | 
    
         | 
| 
       38 
     | 
    
         
            -
            #include <ruby/ruby.h>
         
     | 
| 
       39 
     | 
    
         
            -
             
     | 
| 
       40 
41 
     | 
    
         
             
            #include <grpc/grpc.h>
         
     | 
| 
       41 
42 
     | 
    
         
             
            #include <grpc/grpc_security.h>
         
     | 
| 
      
 43 
     | 
    
         
            +
            #include <grpc/support/alloc.h>
         
     | 
| 
       42 
44 
     | 
    
         
             
            #include <grpc/support/log.h>
         
     | 
| 
       43 
45 
     | 
    
         | 
| 
       44 
46 
     | 
    
         
             
            #include "rb_call_credentials.h"
         
     | 
| 
         @@ -48,6 +50,8 @@ 
     | 
|
| 
       48 
50 
     | 
    
         
             
               grpc_channel_credentials. */
         
     | 
| 
       49 
51 
     | 
    
         
             
            static VALUE grpc_rb_cChannelCredentials = Qnil;
         
     | 
| 
       50 
52 
     | 
    
         | 
| 
      
 53 
     | 
    
         
            +
            static char *pem_root_certs = NULL;
         
     | 
| 
      
 54 
     | 
    
         
            +
             
     | 
| 
       51 
55 
     | 
    
         
             
            /* grpc_rb_channel_credentials wraps a grpc_channel_credentials.  It provides a
         
     | 
| 
       52 
56 
     | 
    
         
             
             * mark object that is used to hold references to any objects used to create
         
     | 
| 
       53 
57 
     | 
    
         
             
             * the credentials. */
         
     | 
| 
         @@ -236,6 +240,25 @@ static VALUE grpc_rb_channel_credentials_compose(int argc, VALUE *argv, 
     | 
|
| 
       236 
240 
     | 
    
         
             
              return grpc_rb_wrap_channel_credentials(creds, mark);
         
     | 
| 
       237 
241 
     | 
    
         
             
            }
         
     | 
| 
       238 
242 
     | 
    
         | 
| 
      
 243 
     | 
    
         
            +
            static grpc_ssl_roots_override_result get_ssl_roots_override(
         
     | 
| 
      
 244 
     | 
    
         
            +
                char **pem_root_certs_ptr) {
         
     | 
| 
      
 245 
     | 
    
         
            +
              *pem_root_certs_ptr = pem_root_certs;
         
     | 
| 
      
 246 
     | 
    
         
            +
              if (pem_root_certs == NULL) {
         
     | 
| 
      
 247 
     | 
    
         
            +
                return GRPC_SSL_ROOTS_OVERRIDE_FAIL;
         
     | 
| 
      
 248 
     | 
    
         
            +
              } else {
         
     | 
| 
      
 249 
     | 
    
         
            +
                return GRPC_SSL_ROOTS_OVERRIDE_OK;
         
     | 
| 
      
 250 
     | 
    
         
            +
              }
         
     | 
| 
      
 251 
     | 
    
         
            +
            }
         
     | 
| 
      
 252 
     | 
    
         
            +
             
     | 
| 
      
 253 
     | 
    
         
            +
            static VALUE grpc_rb_set_default_roots_pem(VALUE self, VALUE roots) {
         
     | 
| 
      
 254 
     | 
    
         
            +
              char *roots_ptr = StringValueCStr(roots);
         
     | 
| 
      
 255 
     | 
    
         
            +
              size_t length = strlen(roots_ptr);
         
     | 
| 
      
 256 
     | 
    
         
            +
              (void)self;
         
     | 
| 
      
 257 
     | 
    
         
            +
              pem_root_certs = gpr_malloc((length + 1) * sizeof(char));
         
     | 
| 
      
 258 
     | 
    
         
            +
              memcpy(pem_root_certs, roots_ptr, length + 1);
         
     | 
| 
      
 259 
     | 
    
         
            +
              return Qnil;
         
     | 
| 
      
 260 
     | 
    
         
            +
            }
         
     | 
| 
      
 261 
     | 
    
         
            +
             
     | 
| 
       239 
262 
     | 
    
         
             
            void Init_grpc_channel_credentials() {
         
     | 
| 
       240 
263 
     | 
    
         
             
              grpc_rb_cChannelCredentials =
         
     | 
| 
       241 
264 
     | 
    
         
             
                  rb_define_class_under(grpc_rb_mGrpcCore, "ChannelCredentials", rb_cObject);
         
     | 
| 
         @@ -251,6 +274,11 @@ void Init_grpc_channel_credentials() { 
     | 
|
| 
       251 
274 
     | 
    
         
             
                               grpc_rb_channel_credentials_init_copy, 1);
         
     | 
| 
       252 
275 
     | 
    
         
             
              rb_define_method(grpc_rb_cChannelCredentials, "compose",
         
     | 
| 
       253 
276 
     | 
    
         
             
                               grpc_rb_channel_credentials_compose, -1);
         
     | 
| 
      
 277 
     | 
    
         
            +
              rb_define_module_function(grpc_rb_cChannelCredentials,
         
     | 
| 
      
 278 
     | 
    
         
            +
                                        "set_default_roots_pem",
         
     | 
| 
      
 279 
     | 
    
         
            +
                                        grpc_rb_set_default_roots_pem, 1);
         
     | 
| 
      
 280 
     | 
    
         
            +
             
     | 
| 
      
 281 
     | 
    
         
            +
              grpc_set_ssl_roots_override_callback(get_ssl_roots_override);
         
     | 
| 
       254 
282 
     | 
    
         | 
| 
       255 
283 
     | 
    
         
             
              id_pem_cert_chain = rb_intern("__pem_cert_chain");
         
     | 
| 
       256 
284 
     | 
    
         
             
              id_pem_private_key = rb_intern("__pem_private_key");
         
     | 
| 
         @@ -1,6 +1,6 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            /*
         
     | 
| 
       2 
2 
     | 
    
         
             
             *
         
     | 
| 
       3 
     | 
    
         
            -
             * Copyright 2015 
     | 
| 
      
 3 
     | 
    
         
            +
             * Copyright 2015, Google Inc.
         
     | 
| 
       4 
4 
     | 
    
         
             
             * All rights reserved.
         
     | 
| 
       5 
5 
     | 
    
         
             
             *
         
     | 
| 
       6 
6 
     | 
    
         
             
             * Redistribution and use in source and binary forms, with or without
         
     | 
| 
         @@ -32,10 +32,10 @@ 
     | 
|
| 
       32 
32 
     | 
    
         
             
             */
         
     | 
| 
       33 
33 
     | 
    
         | 
| 
       34 
34 
     | 
    
         
             
            #include <ruby/ruby.h>
         
     | 
| 
      
 35 
     | 
    
         
            +
             
     | 
| 
       35 
36 
     | 
    
         
             
            #include "rb_grpc_imports.generated.h"
         
     | 
| 
       36 
37 
     | 
    
         
             
            #include "rb_completion_queue.h"
         
     | 
| 
       37 
38 
     | 
    
         | 
| 
       38 
     | 
    
         
            -
            #include <ruby/ruby.h>
         
     | 
| 
       39 
39 
     | 
    
         
             
            #include <ruby/thread.h>
         
     | 
| 
       40 
40 
     | 
    
         | 
| 
       41 
41 
     | 
    
         
             
            #include <grpc/grpc.h>
         
     | 
| 
         @@ -32,12 +32,12 @@ 
     | 
|
| 
       32 
32 
     | 
    
         
             
             */
         
     | 
| 
       33 
33 
     | 
    
         | 
| 
       34 
34 
     | 
    
         
             
            #include <ruby/ruby.h>
         
     | 
| 
      
 35 
     | 
    
         
            +
             
     | 
| 
       35 
36 
     | 
    
         
             
            #include "rb_grpc_imports.generated.h"
         
     | 
| 
       36 
37 
     | 
    
         
             
            #include "rb_event_thread.h"
         
     | 
| 
       37 
38 
     | 
    
         | 
| 
       38 
39 
     | 
    
         
             
            #include <stdbool.h>
         
     | 
| 
       39 
40 
     | 
    
         | 
| 
       40 
     | 
    
         
            -
            #include <ruby/ruby.h>
         
     | 
| 
       41 
41 
     | 
    
         
             
            #include <ruby/thread.h>
         
     | 
| 
       42 
42 
     | 
    
         
             
            #include <grpc/support/alloc.h>
         
     | 
| 
       43 
43 
     | 
    
         
             
            #include <grpc/support/sync.h>
         
     | 
    
        data/src/ruby/ext/grpc/rb_grpc.c
    CHANGED
    
    | 
         @@ -1,6 +1,6 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            /*
         
     | 
| 
       2 
2 
     | 
    
         
             
             *
         
     | 
| 
       3 
     | 
    
         
            -
             * Copyright 2015 
     | 
| 
      
 3 
     | 
    
         
            +
             * Copyright 2015, Google Inc.
         
     | 
| 
       4 
4 
     | 
    
         
             
             * All rights reserved.
         
     | 
| 
       5 
5 
     | 
    
         
             
             *
         
     | 
| 
       6 
6 
     | 
    
         
             
             * Redistribution and use in source and binary forms, with or without
         
     | 
| 
         @@ -32,11 +32,11 @@ 
     | 
|
| 
       32 
32 
     | 
    
         
             
             */
         
     | 
| 
       33 
33 
     | 
    
         | 
| 
       34 
34 
     | 
    
         
             
            #include <ruby/ruby.h>
         
     | 
| 
      
 35 
     | 
    
         
            +
             
     | 
| 
       35 
36 
     | 
    
         
             
            #include "rb_grpc_imports.generated.h"
         
     | 
| 
       36 
37 
     | 
    
         
             
            #include "rb_grpc.h"
         
     | 
| 
       37 
38 
     | 
    
         | 
| 
       38 
39 
     | 
    
         
             
            #include <math.h>
         
     | 
| 
       39 
     | 
    
         
            -
            #include <ruby/ruby.h>
         
     | 
| 
       40 
40 
     | 
    
         
             
            #include <ruby/vm.h>
         
     | 
| 
       41 
41 
     | 
    
         
             
            #include <sys/time.h>
         
     | 
| 
       42 
42 
     | 
    
         | 
| 
         @@ -50,6 +50,7 @@ 
     | 
|
| 
       50 
50 
     | 
    
         
             
            #include "rb_loader.h"
         
     | 
| 
       51 
51 
     | 
    
         
             
            #include "rb_server.h"
         
     | 
| 
       52 
52 
     | 
    
         
             
            #include "rb_server_credentials.h"
         
     | 
| 
      
 53 
     | 
    
         
            +
            #include "rb_signal.h"
         
     | 
| 
       53 
54 
     | 
    
         | 
| 
       54 
55 
     | 
    
         
             
            static VALUE grpc_rb_cTimeVal = Qnil;
         
     | 
| 
       55 
56 
     | 
    
         | 
| 
         @@ -332,6 +333,7 @@ void Init_grpc_c() { 
     | 
|
| 
       332 
333 
     | 
    
         
             
              Init_grpc_channel_credentials();
         
     | 
| 
       333 
334 
     | 
    
         
             
              Init_grpc_server();
         
     | 
| 
       334 
335 
     | 
    
         
             
              Init_grpc_server_credentials();
         
     | 
| 
      
 336 
     | 
    
         
            +
              Init_grpc_signals();
         
     | 
| 
       335 
337 
     | 
    
         
             
              Init_grpc_status_codes();
         
     | 
| 
       336 
338 
     | 
    
         
             
              Init_grpc_time_consts();
         
     | 
| 
       337 
339 
     | 
    
         
             
            }
         
     | 
| 
         @@ -124,6 +124,7 @@ grpc_tracer_set_enabled_type grpc_tracer_set_enabled_import; 
     | 
|
| 
       124 
124 
     | 
    
         
             
            grpc_header_key_is_legal_type grpc_header_key_is_legal_import;
         
     | 
| 
       125 
125 
     | 
    
         
             
            grpc_header_nonbin_value_is_legal_type grpc_header_nonbin_value_is_legal_import;
         
     | 
| 
       126 
126 
     | 
    
         
             
            grpc_is_binary_header_type grpc_is_binary_header_import;
         
     | 
| 
      
 127 
     | 
    
         
            +
            grpc_call_error_to_string_type grpc_call_error_to_string_import;
         
     | 
| 
       127 
128 
     | 
    
         
             
            grpc_auth_property_iterator_next_type grpc_auth_property_iterator_next_import;
         
     | 
| 
       128 
129 
     | 
    
         
             
            grpc_auth_context_property_iterator_type grpc_auth_context_property_iterator_import;
         
     | 
| 
       129 
130 
     | 
    
         
             
            grpc_auth_context_peer_identity_type grpc_auth_context_peer_identity_import;
         
     | 
| 
         @@ -152,6 +153,7 @@ grpc_metadata_credentials_create_from_plugin_type grpc_metadata_credentials_crea 
     | 
|
| 
       152 
153 
     | 
    
         
             
            grpc_secure_channel_create_type grpc_secure_channel_create_import;
         
     | 
| 
       153 
154 
     | 
    
         
             
            grpc_server_credentials_release_type grpc_server_credentials_release_import;
         
     | 
| 
       154 
155 
     | 
    
         
             
            grpc_ssl_server_credentials_create_type grpc_ssl_server_credentials_create_import;
         
     | 
| 
      
 156 
     | 
    
         
            +
            grpc_ssl_server_credentials_create_ex_type grpc_ssl_server_credentials_create_ex_import;
         
     | 
| 
       155 
157 
     | 
    
         
             
            grpc_server_add_secure_http2_port_type grpc_server_add_secure_http2_port_import;
         
     | 
| 
       156 
158 
     | 
    
         
             
            grpc_call_set_credentials_type grpc_call_set_credentials_import;
         
     | 
| 
       157 
159 
     | 
    
         
             
            grpc_server_credentials_set_auth_metadata_processor_type grpc_server_credentials_set_auth_metadata_processor_import;
         
     | 
| 
         @@ -174,6 +176,8 @@ grpc_byte_buffer_reader_readall_type grpc_byte_buffer_reader_readall_import; 
     | 
|
| 
       174 
176 
     | 
    
         
             
            grpc_raw_byte_buffer_from_reader_type grpc_raw_byte_buffer_from_reader_import;
         
     | 
| 
       175 
177 
     | 
    
         
             
            gpr_log_type gpr_log_import;
         
     | 
| 
       176 
178 
     | 
    
         
             
            gpr_log_message_type gpr_log_message_import;
         
     | 
| 
      
 179 
     | 
    
         
            +
            gpr_set_log_verbosity_type gpr_set_log_verbosity_import;
         
     | 
| 
      
 180 
     | 
    
         
            +
            gpr_log_verbosity_init_type gpr_log_verbosity_init_import;
         
     | 
| 
       177 
181 
     | 
    
         
             
            gpr_set_log_function_type gpr_set_log_function_import;
         
     | 
| 
       178 
182 
     | 
    
         
             
            gpr_slice_ref_type gpr_slice_ref_import;
         
     | 
| 
       179 
183 
     | 
    
         
             
            gpr_slice_unref_type gpr_slice_unref_import;
         
     | 
| 
         @@ -386,6 +390,7 @@ void grpc_rb_load_imports(HMODULE library) { 
     | 
|
| 
       386 
390 
     | 
    
         
             
              grpc_header_key_is_legal_import = (grpc_header_key_is_legal_type) GetProcAddress(library, "grpc_header_key_is_legal");
         
     | 
| 
       387 
391 
     | 
    
         
             
              grpc_header_nonbin_value_is_legal_import = (grpc_header_nonbin_value_is_legal_type) GetProcAddress(library, "grpc_header_nonbin_value_is_legal");
         
     | 
| 
       388 
392 
     | 
    
         
             
              grpc_is_binary_header_import = (grpc_is_binary_header_type) GetProcAddress(library, "grpc_is_binary_header");
         
     | 
| 
      
 393 
     | 
    
         
            +
              grpc_call_error_to_string_import = (grpc_call_error_to_string_type) GetProcAddress(library, "grpc_call_error_to_string");
         
     | 
| 
       389 
394 
     | 
    
         
             
              grpc_auth_property_iterator_next_import = (grpc_auth_property_iterator_next_type) GetProcAddress(library, "grpc_auth_property_iterator_next");
         
     | 
| 
       390 
395 
     | 
    
         
             
              grpc_auth_context_property_iterator_import = (grpc_auth_context_property_iterator_type) GetProcAddress(library, "grpc_auth_context_property_iterator");
         
     | 
| 
       391 
396 
     | 
    
         
             
              grpc_auth_context_peer_identity_import = (grpc_auth_context_peer_identity_type) GetProcAddress(library, "grpc_auth_context_peer_identity");
         
     | 
| 
         @@ -414,6 +419,7 @@ void grpc_rb_load_imports(HMODULE library) { 
     | 
|
| 
       414 
419 
     | 
    
         
             
              grpc_secure_channel_create_import = (grpc_secure_channel_create_type) GetProcAddress(library, "grpc_secure_channel_create");
         
     | 
| 
       415 
420 
     | 
    
         
             
              grpc_server_credentials_release_import = (grpc_server_credentials_release_type) GetProcAddress(library, "grpc_server_credentials_release");
         
     | 
| 
       416 
421 
     | 
    
         
             
              grpc_ssl_server_credentials_create_import = (grpc_ssl_server_credentials_create_type) GetProcAddress(library, "grpc_ssl_server_credentials_create");
         
     | 
| 
      
 422 
     | 
    
         
            +
              grpc_ssl_server_credentials_create_ex_import = (grpc_ssl_server_credentials_create_ex_type) GetProcAddress(library, "grpc_ssl_server_credentials_create_ex");
         
     | 
| 
       417 
423 
     | 
    
         
             
              grpc_server_add_secure_http2_port_import = (grpc_server_add_secure_http2_port_type) GetProcAddress(library, "grpc_server_add_secure_http2_port");
         
     | 
| 
       418 
424 
     | 
    
         
             
              grpc_call_set_credentials_import = (grpc_call_set_credentials_type) GetProcAddress(library, "grpc_call_set_credentials");
         
     | 
| 
       419 
425 
     | 
    
         
             
              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");
         
     | 
| 
         @@ -436,6 +442,8 @@ void grpc_rb_load_imports(HMODULE library) { 
     | 
|
| 
       436 
442 
     | 
    
         
             
              grpc_raw_byte_buffer_from_reader_import = (grpc_raw_byte_buffer_from_reader_type) GetProcAddress(library, "grpc_raw_byte_buffer_from_reader");
         
     | 
| 
       437 
443 
     | 
    
         
             
              gpr_log_import = (gpr_log_type) GetProcAddress(library, "gpr_log");
         
     | 
| 
       438 
444 
     | 
    
         
             
              gpr_log_message_import = (gpr_log_message_type) GetProcAddress(library, "gpr_log_message");
         
     | 
| 
      
 445 
     | 
    
         
            +
              gpr_set_log_verbosity_import = (gpr_set_log_verbosity_type) GetProcAddress(library, "gpr_set_log_verbosity");
         
     | 
| 
      
 446 
     | 
    
         
            +
              gpr_log_verbosity_init_import = (gpr_log_verbosity_init_type) GetProcAddress(library, "gpr_log_verbosity_init");
         
     | 
| 
       439 
447 
     | 
    
         
             
              gpr_set_log_function_import = (gpr_set_log_function_type) GetProcAddress(library, "gpr_set_log_function");
         
     | 
| 
       440 
448 
     | 
    
         
             
              gpr_slice_ref_import = (gpr_slice_ref_type) GetProcAddress(library, "gpr_slice_ref");
         
     | 
| 
       441 
449 
     | 
    
         
             
              gpr_slice_unref_import = (gpr_slice_unref_type) GetProcAddress(library, "gpr_slice_unref");
         
     |