diff options
author | Tim Emiola <temiola@google.com> | 2015-03-28 01:48:44 -0700 |
---|---|---|
committer | Tim Emiola <temiola@google.com> | 2015-04-10 11:23:42 -0700 |
commit | 98a32d399a20f44cd76576316b25847cd4918fc1 (patch) | |
tree | 2a48d1d0f2795f29104acdb21db2e3bf31a83b9a | |
parent | 6de558f9cdd54fedbd7b1b1bb16e95023e3193bc (diff) |
Adds symbols to access the fields in Status struct
-rw-r--r-- | src/ruby/ext/grpc/rb_grpc.c | 7 | ||||
-rw-r--r-- | src/ruby/ext/grpc/rb_grpc.h | 9 | ||||
-rw-r--r-- | src/ruby/spec/call_spec.rb | 37 |
3 files changed, 18 insertions, 35 deletions
diff --git a/src/ruby/ext/grpc/rb_grpc.c b/src/ruby/ext/grpc/rb_grpc.c index 400efd0dfa..eeee913788 100644 --- a/src/ruby/ext/grpc/rb_grpc.c +++ b/src/ruby/ext/grpc/rb_grpc.c @@ -195,7 +195,7 @@ static ID id_inspect; /* id_to_s is the to_s method found on various ruby objects. */ static ID id_to_s; -/* Converts `a wrapped time constant to a standard time. */ +/* Converts a wrapped time constant to a standard time. */ VALUE grpc_rb_time_val_to_time(VALUE self) { gpr_timespec *time_const = NULL; Data_Get_Struct(self, gpr_timespec, time_const); @@ -257,8 +257,11 @@ void Init_grpc() { rb_mGRPC = rb_define_module("GRPC"); rb_mGrpcCore = rb_define_module_under(rb_mGRPC, "Core"); rb_sNewServerRpc = rb_struct_define("NewServerRpc", "method", "host", - "deadline", "metadata", NULL); + "deadline", "metadata", "call", NULL); rb_sStatus = rb_struct_define("Status", "code", "details", "metadata", NULL); + sym_code = ID2SYM(rb_intern("code")); + sym_details = ID2SYM(rb_intern("details")); + sym_metadata = ID2SYM(rb_intern("metadata")); Init_grpc_byte_buffer(); Init_grpc_event(); diff --git a/src/ruby/ext/grpc/rb_grpc.h b/src/ruby/ext/grpc/rb_grpc.h index 851f5ee69f..4ff9b7f6e9 100644 --- a/src/ruby/ext/grpc/rb_grpc.h +++ b/src/ruby/ext/grpc/rb_grpc.h @@ -50,6 +50,15 @@ extern VALUE rb_sNewServerRpc; /* rb_sStruct is the struct that holds status details. */ extern VALUE rb_sStatus; +/* sym_code is the symbol for the code attribute of rb_sStatus. */ +VALUE sym_code; + +/* sym_details is the symbol for the details attribute of rb_sStatus. */ +VALUE sym_details; + +/* sym_metadata is the symbol for the metadata attribute of rb_sStatus. */ +VALUE sym_metadata; + /* GC_NOT_MARKED is used in calls to Data_Wrap_Struct to indicate that the wrapped struct does not need to participate in ruby gc. */ extern const RUBY_DATA_FUNC GC_NOT_MARKED; diff --git a/src/ruby/spec/call_spec.rb b/src/ruby/spec/call_spec.rb index 108051a1e5..1f67cbac6e 100644 --- a/src/ruby/spec/call_spec.rb +++ b/src/ruby/spec/call_spec.rb @@ -76,7 +76,7 @@ describe GRPC::Core::CallOps do RECV_INITIAL_METADATA: 4, RECV_MESSAGE: 5, RECV_STATUS_ON_CLIENT: 6, - RECV_CLOSE_ON_SERVER: 7, + RECV_CLOSE_ON_SERVER: 7 } end @@ -88,43 +88,14 @@ describe GRPC::Core::CallOps do end describe GRPC::Core::Call do - let (:client_queue) { GRPC::Core::CompletionQueue.new } - let (:test_tag) { Object.new } - let (:fake_host) { 'localhost:10101' } + let(:client_queue) { GRPC::Core::CompletionQueue.new } + let(:test_tag) { Object.new } + let(:fake_host) { 'localhost:10101' } before(:each) do @ch = GRPC::Core::Channel.new(fake_host, nil) end - describe '#start_read' do - xit 'should fail if called immediately' do - blk = proc { make_test_call.start_read(test_tag) } - expect(&blk).to raise_error GRPC::Core::CallError - end - end - - describe '#start_write' do - xit 'should fail if called immediately' do - bytes = GRPC::Core::ByteBuffer.new('test string') - blk = proc { make_test_call.start_write(bytes, test_tag) } - expect(&blk).to raise_error GRPC::Core::CallError - end - end - - describe '#start_write_status' do - xit 'should fail if called immediately' do - blk = proc { make_test_call.start_write_status(153, 'x', test_tag) } - expect(&blk).to raise_error GRPC::Core::CallError - end - end - - describe '#writes_done' do - xit 'should fail if called immediately' do - blk = proc { make_test_call.writes_done(Object.new) } - expect(&blk).to raise_error GRPC::Core::CallError - end - end - describe '#add_metadata' do it 'adds metadata to a call without fail' do call = make_test_call |