|  | @@ -31,7 +31,7 @@
 | 
	
		
			
				|  |  |   *
 | 
	
		
			
				|  |  |   */
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -#include "rb_credentials.h"
 | 
	
		
			
				|  |  | +#include "rb_channel_credentials.h"
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  #include <ruby/ruby.h>
 | 
	
		
			
				|  |  |  
 | 
	
	
		
			
				|  | @@ -40,32 +40,33 @@
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  #include "rb_grpc.h"
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -/* grpc_rb_cCredentials is the ruby class that proxies grpc_credentials. */
 | 
	
		
			
				|  |  | -static VALUE grpc_rb_cCredentials = Qnil;
 | 
	
		
			
				|  |  | +/* grpc_rb_cChannelCredentials is the ruby class that proxies
 | 
	
		
			
				|  |  | +   grpc_channel_credentials. */
 | 
	
		
			
				|  |  | +static VALUE grpc_rb_cChannelCredentials = Qnil;
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -/* grpc_rb_credentials wraps a grpc_credentials.  It provides a
 | 
	
		
			
				|  |  | +/* grpc_rb_channel_credentials wraps a grpc_channel_credentials.  It provides a
 | 
	
		
			
				|  |  |   * peer ruby object, 'mark' to minimize copying when a credential is
 | 
	
		
			
				|  |  |   * created from ruby. */
 | 
	
		
			
				|  |  | -typedef struct grpc_rb_credentials {
 | 
	
		
			
				|  |  | +typedef struct grpc_rb_channel_credentials {
 | 
	
		
			
				|  |  |    /* Holder of ruby objects involved in constructing the credentials */
 | 
	
		
			
				|  |  |    VALUE mark;
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |    /* The actual credentials */
 | 
	
		
			
				|  |  | -  grpc_credentials *wrapped;
 | 
	
		
			
				|  |  | -} grpc_rb_credentials;
 | 
	
		
			
				|  |  | +  grpc_channel_credentials *wrapped;
 | 
	
		
			
				|  |  | +} grpc_rb_channel_credentials;
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  /* Destroys the credentials instances. */
 | 
	
		
			
				|  |  | -static void grpc_rb_credentials_free(void *p) {
 | 
	
		
			
				|  |  | -  grpc_rb_credentials *wrapper = NULL;
 | 
	
		
			
				|  |  | +static void grpc_rb_channel_credentials_free(void *p) {
 | 
	
		
			
				|  |  | +  grpc_rb_channel_credentials *wrapper = NULL;
 | 
	
		
			
				|  |  |    if (p == NULL) {
 | 
	
		
			
				|  |  |      return;
 | 
	
		
			
				|  |  |    };
 | 
	
		
			
				|  |  | -  wrapper = (grpc_rb_credentials *)p;
 | 
	
		
			
				|  |  | +  wrapper = (grpc_rb_channel_credentials *)p;
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |    /* Delete the wrapped object if the mark object is Qnil, which indicates that
 | 
	
		
			
				|  |  |     * no other object is the actual owner. */
 | 
	
		
			
				|  |  |    if (wrapper->wrapped != NULL && wrapper->mark == Qnil) {
 | 
	
		
			
				|  |  | -    grpc_credentials_release(wrapper->wrapped);
 | 
	
		
			
				|  |  | +    grpc_channel_credentials_release(wrapper->wrapped);
 | 
	
		
			
				|  |  |      wrapper->wrapped = NULL;
 | 
	
		
			
				|  |  |    }
 | 
	
		
			
				|  |  |  
 | 
	
	
		
			
				|  | @@ -73,12 +74,12 @@ static void grpc_rb_credentials_free(void *p) {
 | 
	
		
			
				|  |  |  }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  /* Protects the mark object from GC */
 | 
	
		
			
				|  |  | -static void grpc_rb_credentials_mark(void *p) {
 | 
	
		
			
				|  |  | -  grpc_rb_credentials *wrapper = NULL;
 | 
	
		
			
				|  |  | +static void grpc_rb_channel_credentials_mark(void *p) {
 | 
	
		
			
				|  |  | +  grpc_rb_channel_credentials *wrapper = NULL;
 | 
	
		
			
				|  |  |    if (p == NULL) {
 | 
	
		
			
				|  |  |      return;
 | 
	
		
			
				|  |  |    }
 | 
	
		
			
				|  |  | -  wrapper = (grpc_rb_credentials *)p;
 | 
	
		
			
				|  |  | +  wrapper = (grpc_rb_channel_credentials *)p;
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |    /* If it's not already cleaned up, mark the mark object */
 | 
	
		
			
				|  |  |    if (wrapper->mark != Qnil) {
 | 
	
	
		
			
				|  | @@ -86,29 +87,29 @@ static void grpc_rb_credentials_mark(void *p) {
 | 
	
		
			
				|  |  |    }
 | 
	
		
			
				|  |  |  }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -static rb_data_type_t grpc_rb_credentials_data_type = {
 | 
	
		
			
				|  |  | -    "grpc_credentials",
 | 
	
		
			
				|  |  | -    {grpc_rb_credentials_mark, grpc_rb_credentials_free,
 | 
	
		
			
				|  |  | +static rb_data_type_t grpc_rb_channel_credentials_data_type = {
 | 
	
		
			
				|  |  | +    "grpc_channel_credentials",
 | 
	
		
			
				|  |  | +    {grpc_rb_channel_credentials_mark, grpc_rb_channel_credentials_free,
 | 
	
		
			
				|  |  |       GRPC_RB_MEMSIZE_UNAVAILABLE, {NULL, NULL}},
 | 
	
		
			
				|  |  |      NULL,
 | 
	
		
			
				|  |  |      NULL,
 | 
	
		
			
				|  |  |      RUBY_TYPED_FREE_IMMEDIATELY};
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -/* Allocates Credential instances.
 | 
	
		
			
				|  |  | +/* Allocates ChannelCredential instances.
 | 
	
		
			
				|  |  |     Provides safe initial defaults for the instance fields. */
 | 
	
		
			
				|  |  | -static VALUE grpc_rb_credentials_alloc(VALUE cls) {
 | 
	
		
			
				|  |  | -  grpc_rb_credentials *wrapper = ALLOC(grpc_rb_credentials);
 | 
	
		
			
				|  |  | +static VALUE grpc_rb_channel_credentials_alloc(VALUE cls) {
 | 
	
		
			
				|  |  | +  grpc_rb_channel_credentials *wrapper = ALLOC(grpc_rb_channel_credentials);
 | 
	
		
			
				|  |  |    wrapper->wrapped = NULL;
 | 
	
		
			
				|  |  |    wrapper->mark = Qnil;
 | 
	
		
			
				|  |  | -  return TypedData_Wrap_Struct(cls, &grpc_rb_credentials_data_type, wrapper);
 | 
	
		
			
				|  |  | +  return TypedData_Wrap_Struct(cls, &grpc_rb_channel_credentials_data_type, wrapper);
 | 
	
		
			
				|  |  |  }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -/* Clones Credentials instances.
 | 
	
		
			
				|  |  | -   Gives Credentials a consistent implementation of Ruby's object copy/dup
 | 
	
		
			
				|  |  | +/* Clones ChannelCredentials instances.
 | 
	
		
			
				|  |  | +   Gives ChannelCredentials a consistent implementation of Ruby's object copy/dup
 | 
	
		
			
				|  |  |     protocol. */
 | 
	
		
			
				|  |  | -static VALUE grpc_rb_credentials_init_copy(VALUE copy, VALUE orig) {
 | 
	
		
			
				|  |  | -  grpc_rb_credentials *orig_cred = NULL;
 | 
	
		
			
				|  |  | -  grpc_rb_credentials *copy_cred = NULL;
 | 
	
		
			
				|  |  | +static VALUE grpc_rb_channel_credentials_init_copy(VALUE copy, VALUE orig) {
 | 
	
		
			
				|  |  | +  grpc_rb_channel_credentials *orig_cred = NULL;
 | 
	
		
			
				|  |  | +  grpc_rb_channel_credentials *copy_cred = NULL;
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |    if (copy == orig) {
 | 
	
		
			
				|  |  |      return copy;
 | 
	
	
		
			
				|  | @@ -116,83 +117,22 @@ static VALUE grpc_rb_credentials_init_copy(VALUE copy, VALUE orig) {
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |    /* Raise an error if orig is not a credentials object or a subclass. */
 | 
	
		
			
				|  |  |    if (TYPE(orig) != T_DATA ||
 | 
	
		
			
				|  |  | -      RDATA(orig)->dfree != (RUBY_DATA_FUNC)grpc_rb_credentials_free) {
 | 
	
		
			
				|  |  | -    rb_raise(rb_eTypeError, "not a %s", rb_obj_classname(grpc_rb_cCredentials));
 | 
	
		
			
				|  |  | +      RDATA(orig)->dfree != (RUBY_DATA_FUNC)grpc_rb_channel_credentials_free) {
 | 
	
		
			
				|  |  | +    rb_raise(rb_eTypeError, "not a %s",
 | 
	
		
			
				|  |  | +             rb_obj_classname(grpc_rb_cChannelCredentials));
 | 
	
		
			
				|  |  |    }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -  TypedData_Get_Struct(orig, grpc_rb_credentials,
 | 
	
		
			
				|  |  | -                       &grpc_rb_credentials_data_type, orig_cred);
 | 
	
		
			
				|  |  | -  TypedData_Get_Struct(copy, grpc_rb_credentials,
 | 
	
		
			
				|  |  | -                       &grpc_rb_credentials_data_type, copy_cred);
 | 
	
		
			
				|  |  | +  TypedData_Get_Struct(orig, grpc_rb_channel_credentials,
 | 
	
		
			
				|  |  | +                       &grpc_rb_channel_credentials_data_type, orig_cred);
 | 
	
		
			
				|  |  | +  TypedData_Get_Struct(copy, grpc_rb_channel_credentials,
 | 
	
		
			
				|  |  | +                       &grpc_rb_channel_credentials_data_type, copy_cred);
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |    /* use ruby's MEMCPY to make a byte-for-byte copy of the credentials
 | 
	
		
			
				|  |  |     * wrapper object. */
 | 
	
		
			
				|  |  | -  MEMCPY(copy_cred, orig_cred, grpc_rb_credentials, 1);
 | 
	
		
			
				|  |  | +  MEMCPY(copy_cred, orig_cred, grpc_rb_channel_credentials, 1);
 | 
	
		
			
				|  |  |    return copy;
 | 
	
		
			
				|  |  |  }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -/*
 | 
	
		
			
				|  |  | -  call-seq:
 | 
	
		
			
				|  |  | -    creds = Credentials.default()
 | 
	
		
			
				|  |  | -    Creates the default credential instances. */
 | 
	
		
			
				|  |  | -static VALUE grpc_rb_default_credentials_create(VALUE cls) {
 | 
	
		
			
				|  |  | -  grpc_rb_credentials *wrapper = ALLOC(grpc_rb_credentials);
 | 
	
		
			
				|  |  | -  wrapper->wrapped = grpc_google_default_credentials_create();
 | 
	
		
			
				|  |  | -  if (wrapper->wrapped == NULL) {
 | 
	
		
			
				|  |  | -    rb_raise(rb_eRuntimeError,
 | 
	
		
			
				|  |  | -             "could not create default credentials, not sure why");
 | 
	
		
			
				|  |  | -    return Qnil;
 | 
	
		
			
				|  |  | -  }
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -  wrapper->mark = Qnil;
 | 
	
		
			
				|  |  | -  return TypedData_Wrap_Struct(cls, &grpc_rb_credentials_data_type, wrapper);
 | 
	
		
			
				|  |  | -}
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -/*
 | 
	
		
			
				|  |  | -  call-seq:
 | 
	
		
			
				|  |  | -    creds = Credentials.compute_engine()
 | 
	
		
			
				|  |  | -    Creates the default credential instances. */
 | 
	
		
			
				|  |  | -static VALUE grpc_rb_compute_engine_credentials_create(VALUE cls) {
 | 
	
		
			
				|  |  | -  grpc_rb_credentials *wrapper = ALLOC(grpc_rb_credentials);
 | 
	
		
			
				|  |  | -  wrapper->wrapped = grpc_google_compute_engine_credentials_create(NULL);
 | 
	
		
			
				|  |  | -  if (wrapper->wrapped == NULL) {
 | 
	
		
			
				|  |  | -    rb_raise(rb_eRuntimeError,
 | 
	
		
			
				|  |  | -             "could not create composite engine credentials, not sure why");
 | 
	
		
			
				|  |  | -    return Qnil;
 | 
	
		
			
				|  |  | -  }
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -  wrapper->mark = Qnil;
 | 
	
		
			
				|  |  | -  return TypedData_Wrap_Struct(cls, &grpc_rb_credentials_data_type, wrapper);
 | 
	
		
			
				|  |  | -}
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -/*
 | 
	
		
			
				|  |  | -  call-seq:
 | 
	
		
			
				|  |  | -    creds1 = ...
 | 
	
		
			
				|  |  | -    creds2 = ...
 | 
	
		
			
				|  |  | -    creds3 = creds1.add(creds2)
 | 
	
		
			
				|  |  | -    Creates the default credential instances. */
 | 
	
		
			
				|  |  | -static VALUE grpc_rb_composite_credentials_create(VALUE self, VALUE other) {
 | 
	
		
			
				|  |  | -  grpc_rb_credentials *self_wrapper = NULL;
 | 
	
		
			
				|  |  | -  grpc_rb_credentials *other_wrapper = NULL;
 | 
	
		
			
				|  |  | -  grpc_rb_credentials *wrapper = NULL;
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -  TypedData_Get_Struct(self, grpc_rb_credentials,
 | 
	
		
			
				|  |  | -                       &grpc_rb_credentials_data_type, self_wrapper);
 | 
	
		
			
				|  |  | -  TypedData_Get_Struct(other, grpc_rb_credentials,
 | 
	
		
			
				|  |  | -                       &grpc_rb_credentials_data_type, other_wrapper);
 | 
	
		
			
				|  |  | -  wrapper = ALLOC(grpc_rb_credentials);
 | 
	
		
			
				|  |  | -  wrapper->wrapped = grpc_composite_credentials_create(
 | 
	
		
			
				|  |  | -      self_wrapper->wrapped, other_wrapper->wrapped, NULL);
 | 
	
		
			
				|  |  | -  if (wrapper->wrapped == NULL) {
 | 
	
		
			
				|  |  | -    rb_raise(rb_eRuntimeError,
 | 
	
		
			
				|  |  | -             "could not create composite credentials, not sure why");
 | 
	
		
			
				|  |  | -    return Qnil;
 | 
	
		
			
				|  |  | -  }
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -  wrapper->mark = Qnil;
 | 
	
		
			
				|  |  | -  return TypedData_Wrap_Struct(grpc_rb_cCredentials,
 | 
	
		
			
				|  |  | -                               &grpc_rb_credentials_data_type, wrapper);
 | 
	
		
			
				|  |  | -}
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  /* The attribute used on the mark object to hold the pem_root_certs. */
 | 
	
		
			
				|  |  |  static ID id_pem_root_certs;
 | 
	
	
		
			
				|  | @@ -213,12 +153,12 @@ static ID id_pem_cert_chain;
 | 
	
		
			
				|  |  |      pem_private_key: (optional) PEM encoding of the client's private key
 | 
	
		
			
				|  |  |      pem_cert_chain: (optional) PEM encoding of the client's cert chain
 | 
	
		
			
				|  |  |      Initializes Credential instances. */
 | 
	
		
			
				|  |  | -static VALUE grpc_rb_credentials_init(int argc, VALUE *argv, VALUE self) {
 | 
	
		
			
				|  |  | +static VALUE grpc_rb_channel_credentials_init(int argc, VALUE *argv, VALUE self) {
 | 
	
		
			
				|  |  |    VALUE pem_root_certs = Qnil;
 | 
	
		
			
				|  |  |    VALUE pem_private_key = Qnil;
 | 
	
		
			
				|  |  |    VALUE pem_cert_chain = Qnil;
 | 
	
		
			
				|  |  | -  grpc_rb_credentials *wrapper = NULL;
 | 
	
		
			
				|  |  | -  grpc_credentials *creds = NULL;
 | 
	
		
			
				|  |  | +  grpc_rb_channel_credentials *wrapper = NULL;
 | 
	
		
			
				|  |  | +  grpc_channel_credentials *creds = NULL;
 | 
	
		
			
				|  |  |    grpc_ssl_pem_key_cert_pair key_cert_pair;
 | 
	
		
			
				|  |  |    MEMZERO(&key_cert_pair, grpc_ssl_pem_key_cert_pair, 1);
 | 
	
		
			
				|  |  |    /* TODO: Remove mandatory arg when we support default roots. */
 | 
	
	
		
			
				|  | @@ -226,8 +166,8 @@ static VALUE grpc_rb_credentials_init(int argc, VALUE *argv, VALUE self) {
 | 
	
		
			
				|  |  |    rb_scan_args(argc, argv, "12", &pem_root_certs, &pem_private_key,
 | 
	
		
			
				|  |  |                 &pem_cert_chain);
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -  TypedData_Get_Struct(self, grpc_rb_credentials,
 | 
	
		
			
				|  |  | -                       &grpc_rb_credentials_data_type, wrapper);
 | 
	
		
			
				|  |  | +  TypedData_Get_Struct(self, grpc_rb_channel_credentials,
 | 
	
		
			
				|  |  | +                       &grpc_rb_channel_credentials_data_type, wrapper);
 | 
	
		
			
				|  |  |    if (pem_root_certs == Qnil) {
 | 
	
		
			
				|  |  |      rb_raise(rb_eRuntimeError,
 | 
	
		
			
				|  |  |               "could not create a credential: nil pem_root_certs");
 | 
	
	
		
			
				|  | @@ -256,39 +196,30 @@ static VALUE grpc_rb_credentials_init(int argc, VALUE *argv, VALUE self) {
 | 
	
		
			
				|  |  |    return self;
 | 
	
		
			
				|  |  |  }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -void Init_grpc_credentials() {
 | 
	
		
			
				|  |  | -  grpc_rb_cCredentials =
 | 
	
		
			
				|  |  | -      rb_define_class_under(grpc_rb_mGrpcCore, "Credentials", rb_cObject);
 | 
	
		
			
				|  |  | +void Init_grpc_channel_credentials() {
 | 
	
		
			
				|  |  | +  grpc_rb_cChannelCredentials =
 | 
	
		
			
				|  |  | +      rb_define_class_under(grpc_rb_mGrpcCore, "ChannelCredentials", rb_cObject);
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |    /* Allocates an object managed by the ruby runtime */
 | 
	
		
			
				|  |  | -  rb_define_alloc_func(grpc_rb_cCredentials, grpc_rb_credentials_alloc);
 | 
	
		
			
				|  |  | +  rb_define_alloc_func(grpc_rb_cChannelCredentials,
 | 
	
		
			
				|  |  | +                       grpc_rb_channel_credentials_alloc);
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |    /* Provides a ruby constructor and support for dup/clone. */
 | 
	
		
			
				|  |  | -  rb_define_method(grpc_rb_cCredentials, "initialize", grpc_rb_credentials_init,
 | 
	
		
			
				|  |  | -                   -1);
 | 
	
		
			
				|  |  | -  rb_define_method(grpc_rb_cCredentials, "initialize_copy",
 | 
	
		
			
				|  |  | -                   grpc_rb_credentials_init_copy, 1);
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -  /* Provide static funcs that create new special instances. */
 | 
	
		
			
				|  |  | -  rb_define_singleton_method(grpc_rb_cCredentials, "default",
 | 
	
		
			
				|  |  | -                             grpc_rb_default_credentials_create, 0);
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -  rb_define_singleton_method(grpc_rb_cCredentials, "compute_engine",
 | 
	
		
			
				|  |  | -                             grpc_rb_compute_engine_credentials_create, 0);
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -  /* Provide other methods. */
 | 
	
		
			
				|  |  | -  rb_define_method(grpc_rb_cCredentials, "compose",
 | 
	
		
			
				|  |  | -                   grpc_rb_composite_credentials_create, 1);
 | 
	
		
			
				|  |  | +  rb_define_method(grpc_rb_cChannelCredentials, "initialize",
 | 
	
		
			
				|  |  | +                   grpc_rb_channel_credentials_init, -1);
 | 
	
		
			
				|  |  | +  rb_define_method(grpc_rb_cChannelCredentials, "initialize_copy",
 | 
	
		
			
				|  |  | +                   grpc_rb_channel_credentials_init_copy, 1);
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |    id_pem_cert_chain = rb_intern("__pem_cert_chain");
 | 
	
		
			
				|  |  |    id_pem_private_key = rb_intern("__pem_private_key");
 | 
	
		
			
				|  |  |    id_pem_root_certs = rb_intern("__pem_root_certs");
 | 
	
		
			
				|  |  |  }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -/* Gets the wrapped grpc_credentials from the ruby wrapper */
 | 
	
		
			
				|  |  | -grpc_credentials *grpc_rb_get_wrapped_credentials(VALUE v) {
 | 
	
		
			
				|  |  | -  grpc_rb_credentials *wrapper = NULL;
 | 
	
		
			
				|  |  | -  TypedData_Get_Struct(v, grpc_rb_credentials, &grpc_rb_credentials_data_type,
 | 
	
		
			
				|  |  | +/* Gets the wrapped grpc_channel_credentials from the ruby wrapper */
 | 
	
		
			
				|  |  | +grpc_channel_credentials *grpc_rb_get_wrapped_channel_credentials(VALUE v) {
 | 
	
		
			
				|  |  | +  grpc_rb_channel_credentials *wrapper = NULL;
 | 
	
		
			
				|  |  | +  TypedData_Get_Struct(v, grpc_rb_channel_credentials,
 | 
	
		
			
				|  |  | +                       &grpc_rb_channel_credentials_data_type,
 | 
	
		
			
				|  |  |                         wrapper);
 | 
	
		
			
				|  |  |    return wrapper->wrapped;
 | 
	
		
			
				|  |  |  }
 |