protobuf 1.0.0 → 1.0.1
Sign up to get free protection for your applications and to get access to all the features.
- data/Gemfile.lock +1 -1
- data/README.md +138 -126
- data/bin/rpc_server +2 -2
- data/bin/rprotoc +2 -2
- data/examples/reading_a_message.rb +3 -3
- data/examples/writing_a_message.rb +3 -3
- data/lib/protobuf.rb +3 -0
- data/lib/protobuf/compiler/nodes.rb +1 -1
- data/lib/protobuf/compiler/proto_parser.rb +16 -16
- data/lib/protobuf/compiler/visitors.rb +11 -25
- data/lib/protobuf/descriptor/descriptor_builder.rb +58 -58
- data/lib/protobuf/descriptor/field_descriptor.rb +2 -2
- data/lib/protobuf/ext/eventmachine.rb +16 -0
- data/lib/protobuf/message/decoder.rb +6 -6
- data/lib/protobuf/message/field.rb +14 -14
- data/lib/protobuf/message/message.rb +4 -4
- data/lib/protobuf/rpc/client.rb +42 -183
- data/lib/protobuf/rpc/connector.rb +19 -0
- data/lib/protobuf/rpc/connectors/base.rb +29 -0
- data/lib/protobuf/rpc/connectors/em_client.rb +227 -0
- data/lib/protobuf/rpc/connectors/eventmachine.rb +84 -0
- data/lib/protobuf/rpc/connectors/socket.rb +14 -0
- data/lib/protobuf/rpc/service.rb +4 -4
- data/lib/protobuf/version.rb +1 -1
- data/protobuf.gemspec +3 -3
- data/spec/helper/all.rb +13 -0
- data/spec/helper/server.rb +36 -0
- data/spec/helper/tolerance_matcher.rb +40 -0
- data/spec/spec_helper.rb +3 -5
- data/spec/unit/rpc/client_spec.rb +174 -0
- data/spec/unit/rpc/connector_spec.rb +36 -0
- data/spec/unit/rpc/connectors/base_spec.rb +77 -0
- data/spec/unit/rpc/connectors/eventmachine/client_spec.rb +0 -0
- data/spec/unit/rpc/connectors/eventmachine_spec.rb +0 -0
- data/spec/unit/{server_spec.rb → rpc/server_spec.rb} +0 -0
- data/spec/unit/{service_spec.rb → rpc/service_spec.rb} +0 -0
- metadata +79 -63
- data/lib/protobuf/compiler/template/rpc_bin.erb +0 -4
- data/lib/protobuf/compiler/template/rpc_client.erb +0 -18
- data/lib/protobuf/compiler/template/rpc_service.erb +0 -25
- data/lib/protobuf/rpc/client_connection.rb +0 -225
- data/spec/unit/client_spec.rb +0 -128
@@ -0,0 +1,40 @@
|
|
1
|
+
#
|
2
|
+
# courtesy of sander 6
|
3
|
+
# - http://github.com/sander6/custom_matchers/blob/master/lib/matchers/tolerance_matchers.rb
|
4
|
+
#
|
5
|
+
module Sander6
|
6
|
+
module CustomMatchers
|
7
|
+
|
8
|
+
class ToleranceMatcher
|
9
|
+
def initialize(tolerance)
|
10
|
+
@tolerance = tolerance
|
11
|
+
@target = 0
|
12
|
+
end
|
13
|
+
|
14
|
+
def of(target)
|
15
|
+
@target = target
|
16
|
+
self
|
17
|
+
end
|
18
|
+
|
19
|
+
def matches?(value)
|
20
|
+
@value = value
|
21
|
+
((@target - @tolerance)..(@target + @tolerance)).include?(@value)
|
22
|
+
end
|
23
|
+
|
24
|
+
def failure_message
|
25
|
+
"Expected #{@value.inspect} to be within #{@tolerance.inspect} of #{@target.inspect}, but it wasn't.\n" +
|
26
|
+
"Difference: #{@value - @target}"
|
27
|
+
end
|
28
|
+
|
29
|
+
def negative_failure_message
|
30
|
+
"Expected #{@value.inspect} not to be within #{@tolerance.inspect} of #{@target.inspect}, but it was.\n" +
|
31
|
+
"Difference: #{@value - @target}"
|
32
|
+
end
|
33
|
+
end
|
34
|
+
|
35
|
+
def be_within(value)
|
36
|
+
Sander6::CustomMatchers::ToleranceMatcher.new(value)
|
37
|
+
end
|
38
|
+
|
39
|
+
end
|
40
|
+
end
|
data/spec/spec_helper.rb
CHANGED
@@ -13,11 +13,9 @@ require 'protobuf'
|
|
13
13
|
require 'protobuf/rpc/client'
|
14
14
|
class ::Protobuf::Rpc::Client
|
15
15
|
def == other
|
16
|
-
options == other.options && \
|
17
|
-
|
18
|
-
|
19
|
-
@success_callback == other.instance_variable_get(:@success_callback) && \
|
20
|
-
@failure_callback == other.instance_variable_get(:@failure_callback)
|
16
|
+
connector.options == other.options && \
|
17
|
+
success_cb == other.success_cb && \
|
18
|
+
failure_cb == other.failure_cb
|
21
19
|
end
|
22
20
|
end
|
23
21
|
|
@@ -0,0 +1,174 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
require 'spec/proto/test_service_impl'
|
3
|
+
require 'spec/helper/all'
|
4
|
+
|
5
|
+
describe Protobuf::Rpc::Client do
|
6
|
+
|
7
|
+
context "when using fiber based calls" do
|
8
|
+
it "waits for response when running synchronously" do
|
9
|
+
EventMachine.fiber_run do
|
10
|
+
delay = 3
|
11
|
+
server = StubServer.new(delay)
|
12
|
+
stop_servers = lambda { server.stop; EventMachine.stop }
|
13
|
+
client = Spec::Proto::TestService.client(:async => false)
|
14
|
+
|
15
|
+
start = now
|
16
|
+
|
17
|
+
client.find(:name => "Test Name", :active => true) do |c|
|
18
|
+
c.on_success do |succ|
|
19
|
+
succ.name.should eq("Test Name")
|
20
|
+
succ.status.should eq(Spec::Proto::StatusType::ENABLED)
|
21
|
+
end
|
22
|
+
|
23
|
+
c.on_failure do |err|
|
24
|
+
raise err.inspect
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
(now - start).should be_within(delay * 0.10).of(delay)
|
29
|
+
stop_servers.call
|
30
|
+
end
|
31
|
+
end
|
32
|
+
|
33
|
+
it "doesn't wait for response when running async call inside fiber" do
|
34
|
+
EventMachine.fiber_run do
|
35
|
+
delay = 3
|
36
|
+
server = StubServer.new(delay)
|
37
|
+
stop_servers = lambda { server.stop; EventMachine.stop }
|
38
|
+
client = Spec::Proto::TestService.client(:async => true)
|
39
|
+
|
40
|
+
start = now
|
41
|
+
|
42
|
+
client.find(:name => "Test Name", :active => true)
|
43
|
+
|
44
|
+
(now - start).should_not be_within(delay * 0.10).of(delay)
|
45
|
+
stop_servers.call
|
46
|
+
end
|
47
|
+
end
|
48
|
+
|
49
|
+
it "throws and error when synchronous code is attempted without 'EventMachine.fiber_run'" do
|
50
|
+
subject = Proc.new do
|
51
|
+
EventMachine.run do
|
52
|
+
delay = 1
|
53
|
+
server = StubServer.new(delay)
|
54
|
+
stop_servers = lambda { server.stop; EventMachine.stop }
|
55
|
+
client = Spec::Proto::TestService.client(:async => false)
|
56
|
+
|
57
|
+
client.find(:name => "Test Name", :active => true)
|
58
|
+
stop_servers.call
|
59
|
+
end
|
60
|
+
end
|
61
|
+
|
62
|
+
subject.should raise_error(RuntimeError, /EM.fiber_run/)
|
63
|
+
end
|
64
|
+
|
65
|
+
it "throws a timeout when client timeout is exceeded" do
|
66
|
+
subject = Proc.new do
|
67
|
+
EventMachine.fiber_run do
|
68
|
+
delay = 3
|
69
|
+
server = StubServer.new(delay)
|
70
|
+
stop_servers = lambda { server.stop; EventMachine.stop }
|
71
|
+
client = Spec::Proto::TestService.client(:async => false, :timeout => 1)
|
72
|
+
|
73
|
+
client.find(:name => "Test Name", :active => true)
|
74
|
+
stop_servers.call
|
75
|
+
end
|
76
|
+
end
|
77
|
+
|
78
|
+
subject.should raise_error(RuntimeError, /timeout/i)
|
79
|
+
end
|
80
|
+
|
81
|
+
end
|
82
|
+
|
83
|
+
context 'when creating a client from a service' do
|
84
|
+
|
85
|
+
it 'should be able to get a client through the Service#client helper method' do
|
86
|
+
Spec::Proto::TestService.client(:port => 9191).should eq(Protobuf::Rpc::Client.new(:service => Spec::Proto::TestService, :port => 9191))
|
87
|
+
end
|
88
|
+
|
89
|
+
it "should be able to override a service location's host and port" do
|
90
|
+
Spec::Proto::TestService.located_at 'somewheregreat.com:12345'
|
91
|
+
clean_client = Spec::Proto::TestService.client
|
92
|
+
clean_client.options[:host].should eq('somewheregreat.com')
|
93
|
+
clean_client.options[:port].should eq(12345)
|
94
|
+
|
95
|
+
updated_client = Spec::Proto::TestService.client(:host => 'amazing.com', :port => 54321)
|
96
|
+
updated_client.options[:host].should eq('amazing.com')
|
97
|
+
updated_client.options[:port].should eq(54321)
|
98
|
+
end
|
99
|
+
|
100
|
+
it 'should be able to define the syncronicity of the client request' do
|
101
|
+
client = Spec::Proto::TestService.client(:async => false)
|
102
|
+
client.options[:async].should be_false
|
103
|
+
client.async?.should be_false
|
104
|
+
|
105
|
+
client = Spec::Proto::TestService.client(:async => true)
|
106
|
+
client.options[:async].should be_true
|
107
|
+
client.async?.should be_true
|
108
|
+
end
|
109
|
+
|
110
|
+
it 'should be able to define which service to create itself for' do
|
111
|
+
client = Protobuf::Rpc::Client.new :service => Spec::Proto::TestService
|
112
|
+
client.options[:service].should eq(Spec::Proto::TestService)
|
113
|
+
end
|
114
|
+
|
115
|
+
it 'should have a hard default for host and port on a service that has not been configured' do
|
116
|
+
reset_service_location Spec::Proto::TestService
|
117
|
+
client = Spec::Proto::TestService.client
|
118
|
+
client.options[:host].should eq(Protobuf::Rpc::Service::DEFAULT_LOCATION[:host])
|
119
|
+
client.options[:port].should eq(Protobuf::Rpc::Service::DEFAULT_LOCATION[:port])
|
120
|
+
end
|
121
|
+
|
122
|
+
end
|
123
|
+
|
124
|
+
context 'when calling methods on a service client' do
|
125
|
+
|
126
|
+
# NOTE: we are assuming the service methods are accurately
|
127
|
+
# defined inside spec/proto/test_service.rb,
|
128
|
+
# namely the :find method
|
129
|
+
|
130
|
+
it 'should respond to defined service methods' do
|
131
|
+
client = Spec::Proto::TestService.client
|
132
|
+
client.should_receive(:send_request).and_return(nil)
|
133
|
+
expect { client.find(nil) }.should_not raise_error
|
134
|
+
end
|
135
|
+
|
136
|
+
it 'raises a NameError when accessing a var that does not exist' do
|
137
|
+
pending
|
138
|
+
end
|
139
|
+
|
140
|
+
it 'should be able to set and get local variables within client response blocks' do
|
141
|
+
outer_value = 'OUTER'
|
142
|
+
inner_value = 'INNER'
|
143
|
+
client = Spec::Proto::TestService.client(:async => true)
|
144
|
+
|
145
|
+
EM.should_receive(:reactor_running?).and_return(true)
|
146
|
+
EM.stub!(:schedule) do
|
147
|
+
client.success_cb.call(inner_value)
|
148
|
+
end
|
149
|
+
|
150
|
+
client.find(nil) do |c|
|
151
|
+
c.on_success do |response|
|
152
|
+
outer_value.should eq('OUTER')
|
153
|
+
outer_value = response
|
154
|
+
end
|
155
|
+
end
|
156
|
+
outer_value.should eq(inner_value)
|
157
|
+
end
|
158
|
+
|
159
|
+
end
|
160
|
+
|
161
|
+
context 'when receiving request objects' do
|
162
|
+
|
163
|
+
it 'should be able to create the correct request object if passed a hash' do
|
164
|
+
client = Spec::Proto::TestService.client
|
165
|
+
client.should_receive(:send_request)
|
166
|
+
client.find({:name => 'Test Name', :active => false})
|
167
|
+
client.options[:request].should be_a Spec::Proto::ResourceFindRequest
|
168
|
+
client.options[:request].name.should eq('Test Name')
|
169
|
+
client.options[:request].active.should eq(false)
|
170
|
+
end
|
171
|
+
|
172
|
+
end
|
173
|
+
|
174
|
+
end
|
@@ -0,0 +1,36 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Protobuf::Rpc::Connector do
|
4
|
+
|
5
|
+
describe '.connector_for_platform' do
|
6
|
+
|
7
|
+
context 'when platform is java' do
|
8
|
+
let(:platform) { 'jruby' }
|
9
|
+
it 'returns a socket connector class reference' do
|
10
|
+
Protobuf::Rpc::Connector.connector_for_platform(platform).should eq Protobuf::Rpc::Connectors::Socket
|
11
|
+
end
|
12
|
+
end
|
13
|
+
|
14
|
+
context 'when platform is mri' do
|
15
|
+
let(:platform) { 'mri' }
|
16
|
+
it 'returns an eventmachine connector class reference' do
|
17
|
+
Protobuf::Rpc::Connector.connector_for_platform(platform).should eq Protobuf::Rpc::Connectors::EventMachine
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
21
|
+
context 'when platform is unknown' do
|
22
|
+
let(:platform) { 'some_bogus_engine' }
|
23
|
+
it 'returns an eventmachine connector class reference' do
|
24
|
+
Protobuf::Rpc::Connector.connector_for_platform(platform).should eq Protobuf::Rpc::Connectors::EventMachine
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
context 'when platform is not given' do
|
29
|
+
it 'returns an eventmachine connector class reference' do
|
30
|
+
Protobuf::Rpc::Connector.connector_for_platform.should eq Protobuf::Rpc::Connectors::EventMachine
|
31
|
+
end
|
32
|
+
end
|
33
|
+
|
34
|
+
end
|
35
|
+
|
36
|
+
end
|
@@ -0,0 +1,77 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Protobuf::Rpc::Connectors::Base do
|
4
|
+
|
5
|
+
let(:opts) do
|
6
|
+
{ async: false, timeout: 60 }
|
7
|
+
end
|
8
|
+
|
9
|
+
subject { Protobuf::Rpc::Connectors::Base.new(opts) }
|
10
|
+
|
11
|
+
describe '.new' do
|
12
|
+
it 'assigns passed options and initializes success/failure callbacks' do
|
13
|
+
subject.options.should eq opts
|
14
|
+
subject.success_cb.should be_nil
|
15
|
+
subject.failure_cb.should be_nil
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
19
|
+
describe '#success_cb' do
|
20
|
+
it 'allows setting the success callback and calling it' do
|
21
|
+
subject.success_cb.should be_nil
|
22
|
+
cb = proc {|res| raise res }
|
23
|
+
subject.success_cb = cb
|
24
|
+
subject.success_cb.should eq cb
|
25
|
+
expect { subject.success_cb.call('an error from cb') }.to raise_error 'an error from cb'
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|
29
|
+
describe '#failure_cb' do
|
30
|
+
it 'allows setting the failure callback and calling it' do
|
31
|
+
subject.failure_cb.should be_nil
|
32
|
+
cb = proc {|res| raise res }
|
33
|
+
subject.failure_cb = cb
|
34
|
+
subject.failure_cb.should eq cb
|
35
|
+
expect { subject.failure_cb.call('an error from cb') }.to raise_error 'an error from cb'
|
36
|
+
end
|
37
|
+
end
|
38
|
+
|
39
|
+
describe '#async?' do
|
40
|
+
context 'when provided options[:async] is false' do
|
41
|
+
let(:opts) do
|
42
|
+
{ async: false, timeout: 60 }
|
43
|
+
end
|
44
|
+
|
45
|
+
subject { Protobuf::Rpc::Connectors::Base.new(opts) }
|
46
|
+
|
47
|
+
it 'returns false' do
|
48
|
+
subject.async?.should be_false
|
49
|
+
end
|
50
|
+
end
|
51
|
+
|
52
|
+
context 'when provided options[:async] is true' do
|
53
|
+
let(:opts) do
|
54
|
+
{ async: true, timeout: 60 }
|
55
|
+
end
|
56
|
+
|
57
|
+
subject { Protobuf::Rpc::Connectors::Base.new(opts) }
|
58
|
+
|
59
|
+
it 'returns true' do
|
60
|
+
subject.async?.should be_true
|
61
|
+
end
|
62
|
+
end
|
63
|
+
|
64
|
+
context 'when options doesn\'t denote async' do
|
65
|
+
let(:opts) do
|
66
|
+
{ timeout: 60 }
|
67
|
+
end
|
68
|
+
|
69
|
+
subject { Protobuf::Rpc::Connectors::Base.new(opts) }
|
70
|
+
|
71
|
+
it 'returns false' do
|
72
|
+
subject.async?.should be_false
|
73
|
+
end
|
74
|
+
end
|
75
|
+
end
|
76
|
+
|
77
|
+
end
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
metadata
CHANGED
@@ -1,65 +1,68 @@
|
|
1
|
-
--- !ruby/object:Gem::Specification
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
2
|
name: protobuf
|
3
|
-
version: !ruby/object:Gem::Version
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 1.0.1
|
4
5
|
prerelease:
|
5
|
-
version: 1.0.0
|
6
6
|
platform: ruby
|
7
|
-
authors:
|
7
|
+
authors:
|
8
8
|
- BJ Neilsen
|
9
|
+
- Brandon Dewitt
|
9
10
|
autorequire:
|
10
11
|
bindir: bin
|
11
12
|
cert_chain: []
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
dependencies:
|
16
|
-
- !ruby/object:Gem::Dependency
|
13
|
+
date: 2011-12-07 00:00:00.000000000Z
|
14
|
+
dependencies:
|
15
|
+
- !ruby/object:Gem::Dependency
|
17
16
|
name: eventmachine
|
18
|
-
|
19
|
-
requirement: &id001 !ruby/object:Gem::Requirement
|
17
|
+
requirement: &2156121020 !ruby/object:Gem::Requirement
|
20
18
|
none: false
|
21
|
-
requirements:
|
19
|
+
requirements:
|
22
20
|
- - ~>
|
23
|
-
- !ruby/object:Gem::Version
|
21
|
+
- !ruby/object:Gem::Version
|
24
22
|
version: 0.12.10
|
25
23
|
type: :runtime
|
26
|
-
version_requirements: *id001
|
27
|
-
- !ruby/object:Gem::Dependency
|
28
|
-
name: rake
|
29
24
|
prerelease: false
|
30
|
-
|
25
|
+
version_requirements: *2156121020
|
26
|
+
- !ruby/object:Gem::Dependency
|
27
|
+
name: rake
|
28
|
+
requirement: &2156088060 !ruby/object:Gem::Requirement
|
31
29
|
none: false
|
32
|
-
requirements:
|
30
|
+
requirements:
|
33
31
|
- - ~>
|
34
|
-
- !ruby/object:Gem::Version
|
32
|
+
- !ruby/object:Gem::Version
|
35
33
|
version: 0.8.7
|
36
34
|
type: :development
|
37
|
-
version_requirements: *id002
|
38
|
-
- !ruby/object:Gem::Dependency
|
39
|
-
name: rspec
|
40
35
|
prerelease: false
|
41
|
-
|
36
|
+
version_requirements: *2156088060
|
37
|
+
- !ruby/object:Gem::Dependency
|
38
|
+
name: rspec
|
39
|
+
requirement: &2156085040 !ruby/object:Gem::Requirement
|
42
40
|
none: false
|
43
|
-
requirements:
|
41
|
+
requirements:
|
44
42
|
- - ~>
|
45
|
-
- !ruby/object:Gem::Version
|
43
|
+
- !ruby/object:Gem::Version
|
46
44
|
version: 2.7.0
|
47
45
|
type: :development
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
46
|
+
prerelease: false
|
47
|
+
version_requirements: *2156085040
|
48
|
+
description: ! 'Ruby implementation for Protocol Buffers. Works with other protobuf
|
49
|
+
rpc implementations (e.g. Java, Python, C++).
|
50
|
+
|
51
|
+
|
52
|
+
This gem has diverged from https://github.com/macks/ruby-protobuf. All credit for
|
53
|
+
serialization and rprotoc work most certainly goes to the original authors. All
|
54
|
+
RPC implementation code (client/server/service) was written and is maintained by
|
55
|
+
this author. Attempts to reconcile the original codebase with the current RPC implementation
|
56
|
+
went unsuccessful.'
|
57
|
+
email:
|
54
58
|
- bj.neilsen@gmail.com
|
55
|
-
|
59
|
+
- brandonsdewitt@gmail.com
|
60
|
+
executables:
|
56
61
|
- rpc_server
|
57
62
|
- rprotoc
|
58
63
|
extensions: []
|
59
|
-
|
60
64
|
extra_rdoc_files: []
|
61
|
-
|
62
|
-
files:
|
65
|
+
files:
|
63
66
|
- .gitignore
|
64
67
|
- Gemfile
|
65
68
|
- Gemfile.lock
|
@@ -81,9 +84,6 @@ files:
|
|
81
84
|
- lib/protobuf/compiler/proto.y
|
82
85
|
- lib/protobuf/compiler/proto2.ebnf
|
83
86
|
- lib/protobuf/compiler/proto_parser.rb
|
84
|
-
- lib/protobuf/compiler/template/rpc_bin.erb
|
85
|
-
- lib/protobuf/compiler/template/rpc_client.erb
|
86
|
-
- lib/protobuf/compiler/template/rpc_service.erb
|
87
87
|
- lib/protobuf/compiler/template/rpc_service_implementation.erb
|
88
88
|
- lib/protobuf/compiler/visitors.rb
|
89
89
|
- lib/protobuf/descriptor/descriptor.proto
|
@@ -93,6 +93,7 @@ files:
|
|
93
93
|
- lib/protobuf/descriptor/enum_descriptor.rb
|
94
94
|
- lib/protobuf/descriptor/field_descriptor.rb
|
95
95
|
- lib/protobuf/descriptor/file_descriptor.rb
|
96
|
+
- lib/protobuf/ext/eventmachine.rb
|
96
97
|
- lib/protobuf/message/decoder.rb
|
97
98
|
- lib/protobuf/message/encoder.rb
|
98
99
|
- lib/protobuf/message/enum.rb
|
@@ -102,7 +103,11 @@ files:
|
|
102
103
|
- lib/protobuf/message/protoable.rb
|
103
104
|
- lib/protobuf/rpc/buffer.rb
|
104
105
|
- lib/protobuf/rpc/client.rb
|
105
|
-
- lib/protobuf/rpc/
|
106
|
+
- lib/protobuf/rpc/connector.rb
|
107
|
+
- lib/protobuf/rpc/connectors/base.rb
|
108
|
+
- lib/protobuf/rpc/connectors/em_client.rb
|
109
|
+
- lib/protobuf/rpc/connectors/eventmachine.rb
|
110
|
+
- lib/protobuf/rpc/connectors/socket.rb
|
106
111
|
- lib/protobuf/rpc/error.rb
|
107
112
|
- lib/protobuf/rpc/error/client_error.rb
|
108
113
|
- lib/protobuf/rpc/error/server_error.rb
|
@@ -115,17 +120,24 @@ files:
|
|
115
120
|
- protobuf.gemspec
|
116
121
|
- script/mk_parser
|
117
122
|
- spec/functional/embedded_service_spec.rb
|
123
|
+
- spec/helper/all.rb
|
124
|
+
- spec/helper/server.rb
|
125
|
+
- spec/helper/tolerance_matcher.rb
|
118
126
|
- spec/proto/test.pb.rb
|
119
127
|
- spec/proto/test.proto
|
120
128
|
- spec/proto/test_service.rb
|
121
129
|
- spec/proto/test_service_impl.rb
|
122
130
|
- spec/spec_helper.rb
|
123
|
-
- spec/unit/client_spec.rb
|
124
131
|
- spec/unit/common/logger_spec.rb
|
125
132
|
- spec/unit/enum_spec.rb
|
126
133
|
- spec/unit/message_spec.rb
|
127
|
-
- spec/unit/
|
128
|
-
- spec/unit/
|
134
|
+
- spec/unit/rpc/client_spec.rb
|
135
|
+
- spec/unit/rpc/connector_spec.rb
|
136
|
+
- spec/unit/rpc/connectors/base_spec.rb
|
137
|
+
- spec/unit/rpc/connectors/eventmachine/client_spec.rb
|
138
|
+
- spec/unit/rpc/connectors/eventmachine_spec.rb
|
139
|
+
- spec/unit/rpc/server_spec.rb
|
140
|
+
- spec/unit/rpc/service_spec.rb
|
129
141
|
- test/check_unbuild.rb
|
130
142
|
- test/data/data.bin
|
131
143
|
- test/data/data_source.py
|
@@ -172,47 +184,51 @@ files:
|
|
172
184
|
- test/test_serialize.rb
|
173
185
|
- test/test_standard_message.rb
|
174
186
|
- test/test_types.rb
|
175
|
-
has_rdoc: true
|
176
187
|
homepage: https://github.com/localshred/protobuf
|
177
188
|
licenses: []
|
178
|
-
|
179
189
|
post_install_message:
|
180
190
|
rdoc_options: []
|
181
|
-
|
182
|
-
require_paths:
|
191
|
+
require_paths:
|
183
192
|
- lib
|
184
|
-
required_ruby_version: !ruby/object:Gem::Requirement
|
193
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
185
194
|
none: false
|
186
|
-
requirements:
|
187
|
-
- -
|
188
|
-
- !ruby/object:Gem::Version
|
189
|
-
version:
|
190
|
-
required_rubygems_version: !ruby/object:Gem::Requirement
|
195
|
+
requirements:
|
196
|
+
- - ! '>='
|
197
|
+
- !ruby/object:Gem::Version
|
198
|
+
version: '0'
|
199
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
191
200
|
none: false
|
192
|
-
requirements:
|
193
|
-
- -
|
194
|
-
- !ruby/object:Gem::Version
|
195
|
-
version:
|
201
|
+
requirements:
|
202
|
+
- - ! '>='
|
203
|
+
- !ruby/object:Gem::Version
|
204
|
+
version: '0'
|
196
205
|
requirements: []
|
197
|
-
|
198
206
|
rubyforge_project:
|
199
|
-
rubygems_version: 1.
|
207
|
+
rubygems_version: 1.8.10
|
200
208
|
signing_key:
|
201
209
|
specification_version: 3
|
202
|
-
summary: Ruby implementation for Protocol Buffers. Works with other protobuf rpc implementations
|
203
|
-
|
210
|
+
summary: Ruby implementation for Protocol Buffers. Works with other protobuf rpc implementations
|
211
|
+
(e.g. Java, Python, C++).
|
212
|
+
test_files:
|
204
213
|
- spec/functional/embedded_service_spec.rb
|
214
|
+
- spec/helper/all.rb
|
215
|
+
- spec/helper/server.rb
|
216
|
+
- spec/helper/tolerance_matcher.rb
|
205
217
|
- spec/proto/test.pb.rb
|
206
218
|
- spec/proto/test.proto
|
207
219
|
- spec/proto/test_service.rb
|
208
220
|
- spec/proto/test_service_impl.rb
|
209
221
|
- spec/spec_helper.rb
|
210
|
-
- spec/unit/client_spec.rb
|
211
222
|
- spec/unit/common/logger_spec.rb
|
212
223
|
- spec/unit/enum_spec.rb
|
213
224
|
- spec/unit/message_spec.rb
|
214
|
-
- spec/unit/
|
215
|
-
- spec/unit/
|
225
|
+
- spec/unit/rpc/client_spec.rb
|
226
|
+
- spec/unit/rpc/connector_spec.rb
|
227
|
+
- spec/unit/rpc/connectors/base_spec.rb
|
228
|
+
- spec/unit/rpc/connectors/eventmachine/client_spec.rb
|
229
|
+
- spec/unit/rpc/connectors/eventmachine_spec.rb
|
230
|
+
- spec/unit/rpc/server_spec.rb
|
231
|
+
- spec/unit/rpc/service_spec.rb
|
216
232
|
- test/check_unbuild.rb
|
217
233
|
- test/data/data.bin
|
218
234
|
- test/data/data_source.py
|