aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorGravatar Tim Emiola <temiola@google.com>2015-03-28 01:48:44 -0700
committerGravatar Tim Emiola <temiola@google.com>2015-04-10 11:23:42 -0700
commit98a32d399a20f44cd76576316b25847cd4918fc1 (patch)
tree2a48d1d0f2795f29104acdb21db2e3bf31a83b9a
parent6de558f9cdd54fedbd7b1b1bb16e95023e3193bc (diff)
Adds symbols to access the fields in Status struct
-rw-r--r--src/ruby/ext/grpc/rb_grpc.c7
-rw-r--r--src/ruby/ext/grpc/rb_grpc.h9
-rw-r--r--src/ruby/spec/call_spec.rb37
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