diff options
author | Alexander Polcyn <apolcyn@google.com> | 2016-07-11 13:14:07 -0700 |
---|---|---|
committer | Alexander Polcyn <apolcyn@google.com> | 2016-07-11 13:17:48 -0700 |
commit | 6c4709e275dce67aaaf249e24208bd3dc7f69a32 (patch) | |
tree | d3697bab00ec794773da5d3bafb2661beee0454b /src/ruby/ext/grpc/rb_compression_options.c | |
parent | b72cc3dd871f4b0e72519c8bea3577c61e8abd83 (diff) |
replaced constant compress level names with ids
Diffstat (limited to 'src/ruby/ext/grpc/rb_compression_options.c')
-rw-r--r-- | src/ruby/ext/grpc/rb_compression_options.c | 70 |
1 files changed, 25 insertions, 45 deletions
diff --git a/src/ruby/ext/grpc/rb_compression_options.c b/src/ruby/ext/grpc/rb_compression_options.c index 5139826246..02bb3a5ddf 100644 --- a/src/ruby/ext/grpc/rb_compression_options.c +++ b/src/ruby/ext/grpc/rb_compression_options.c @@ -47,6 +47,12 @@ static VALUE grpc_rb_cCompressionOptions = Qnil; +/* Ruby Ids for the names of valid compression levels. */ +static VALUE id_compress_level_none = Qnil; +static VALUE id_compress_level_low = Qnil; +static VALUE id_compress_level_medium = Qnil; +static VALUE id_compress_level_high = Qnil; + /* grpc_rb_compression_options wraps a grpc_compression_options. * It can be used to get the channel argument key-values for specific * compression settings. */ @@ -121,47 +127,27 @@ VALUE grpc_rb_compression_options_disable_compression_algorithm_internal( return Qnil; } -/* Provides a bitset as a ruby number that is suitable to pass to - * the GRPC core as a channel argument to enable compression algorithms. */ /* Gets the compression internal enum value of a compression level given its * name. */ grpc_compression_level grpc_rb_compression_options_level_name_to_value_internal( VALUE level_name) { - VALUE none_symbol = Qnil; - VALUE low_symbol = Qnil; - VALUE medium_symbol = Qnil; - VALUE high_symbol = Qnil; - Check_Type(level_name, T_SYMBOL); - /* Ruby symbols that correspond to names of valid compression levels */ - none_symbol = - rb_const_get(grpc_rb_cCompressionOptions, rb_intern("COMPRESS_NONE_SYM")); - low_symbol = - rb_const_get(grpc_rb_cCompressionOptions, rb_intern("COMPRESS_LOW_SYM")); - medium_symbol = rb_const_get(grpc_rb_cCompressionOptions, - rb_intern("COMPRESS_MEDIUM_SYM")); - high_symbol = - rb_const_get(grpc_rb_cCompressionOptions, rb_intern("COMPRESS_HIGH_SYM")); - /* Check the compression level of the name passed in, and see which macro * from the GRPC core header files match. */ - if (RTEST(rb_funcall(level_name, rb_intern("=="), 1, none_symbol)) != 0) { + if (id_compress_level_none == SYM2ID(level_name)) { return GRPC_COMPRESS_LEVEL_NONE; - } else if (RTEST(rb_funcall(level_name, rb_intern("=="), 1, low_symbol)) != - 0) { + } else if (id_compress_level_low == SYM2ID(level_name)) { return GRPC_COMPRESS_LEVEL_LOW; - } else if (RTEST(rb_funcall(level_name, rb_intern("=="), 1, medium_symbol)) != - 0) { + } else if (id_compress_level_medium == SYM2ID(level_name)) { return GRPC_COMPRESS_LEVEL_MED; - } else if (RTEST(rb_funcall(level_name, rb_intern("=="), 1, high_symbol)) != - 0) { + } else if (id_compress_level_high == SYM2ID(level_name)) { return GRPC_COMPRESS_LEVEL_HIGH; - } else { - rb_raise(rb_eArgError, - "Unrecognized compression level name." - "Valid compression level names are none, low, medium, and high."); } + + rb_raise(rb_eArgError, + "Unrecognized compression level name." + "Valid compression level names are none, low, medium, and high."); } /* Wrapper over grpc_rb_compression_options_level_name_to_value available for @@ -170,6 +156,8 @@ grpc_compression_level grpc_rb_compression_options_level_name_to_value_internal( VALUE grpc_rb_compression_options_level_name_to_value(VALUE self, VALUE level_name) { (void)self; + Check_Type(level_name, T_SYMBOL); + return INT2NUM((int)grpc_rb_compression_options_level_name_to_value_internal( level_name)); } @@ -304,17 +292,13 @@ VALUE grpc_rb_compression_options_level_value_to_name_internal( grpc_compression_level compression_value) { switch (compression_value) { case GRPC_COMPRESS_LEVEL_NONE: - return rb_const_get(grpc_rb_cCompressionOptions, - rb_intern("COMPRESS_NONE_SYM")); + return ID2SYM(id_compress_level_none); case GRPC_COMPRESS_LEVEL_LOW: - return rb_const_get(grpc_rb_cCompressionOptions, - rb_intern("COMPRESS_LOW_SYM")); + return ID2SYM(id_compress_level_low); case GRPC_COMPRESS_LEVEL_MED: - return rb_const_get(grpc_rb_cCompressionOptions, - rb_intern("COMPRESS_MEDIUM_SYM")); + return ID2SYM(id_compress_level_medium); case GRPC_COMPRESS_LEVEL_HIGH: - return rb_const_get(grpc_rb_cCompressionOptions, - rb_intern("COMPRESS_HIGH_SYM")); + return ID2SYM(id_compress_level_high); default: rb_raise( rb_eArgError, @@ -580,13 +564,9 @@ void Init_grpc_compression_options() { rb_define_alias(grpc_rb_cCompressionOptions, "to_channel_arg_hash", "to_hash"); - /* Ruby symbols for the names of the different compression levels. */ - rb_define_const(grpc_rb_cCompressionOptions, "COMPRESS_NONE_SYM", - ID2SYM(rb_intern("none"))); - rb_define_const(grpc_rb_cCompressionOptions, "COMPRESS_LOW_SYM", - ID2SYM(rb_intern("low"))); - rb_define_const(grpc_rb_cCompressionOptions, "COMPRESS_MEDIUM_SYM", - ID2SYM(rb_intern("medium"))); - rb_define_const(grpc_rb_cCompressionOptions, "COMPRESS_HIGH_SYM", - ID2SYM(rb_intern("high"))); + /* Ruby ids for the names of the different compression levels. */ + id_compress_level_none = rb_intern("none"); + id_compress_level_low = rb_intern("low"); + id_compress_level_medium = rb_intern("medium"); + id_compress_level_high = rb_intern("high"); } |