protobuf 2.5.0 → 2.5.1
Sign up to get free protection for your applications and to get access to all the features.
- data/README.md +4 -0
- data/lib/protobuf.rb +13 -0
- data/lib/protobuf/rpc/connectors/base.rb +6 -5
- data/lib/protobuf/rpc/connectors/common.rb +15 -11
- data/lib/protobuf/rpc/connectors/em_client.rb +1 -1
- data/lib/protobuf/rpc/rpc.pb.rb +27 -92
- data/lib/protobuf/rpc/server.rb +2 -4
- data/lib/protobuf/rpc/servers/evented/server.rb +0 -4
- data/lib/protobuf/rpc/servers/socket/server.rb +1 -1
- data/lib/protobuf/rpc/servers/socket/worker.rb +0 -4
- data/lib/protobuf/rpc/servers/zmq/worker.rb +1 -1
- data/lib/protobuf/rpc/service.rb +32 -11
- data/lib/protobuf/rpc/service_dispatcher.rb +1 -1
- data/lib/protobuf/rpc/stat.rb +4 -4
- data/lib/protobuf/version.rb +1 -1
- data/proto/rpc.proto +27 -38
- data/spec/lib/protobuf/rpc/connectors/common_spec.rb +48 -12
- data/spec/lib/protobuf_spec.rb +16 -0
- metadata +111 -98
- data/proto/rpc.pb.rb +0 -48
data/README.md
CHANGED
@@ -14,6 +14,8 @@ So let's dive in and see how to work with all three.
|
|
14
14
|
|
15
15
|
## 1. Generating ruby classes from `.proto` files
|
16
16
|
|
17
|
+
_The `protobuf` package is required for compilation. Mac: `brew install protobuf`, Ubuntu: `sudo apt-get install -y protobuf`_
|
18
|
+
|
17
19
|
Protocol Buffers are great because they allow you to clearly define data storage or data transfer packets. Google officially supports Java, C++, and Python for compilation and usage. Let's make it ruby aware!
|
18
20
|
|
19
21
|
Let's say you have a `defs.proto` file that defines a User message.
|
@@ -24,9 +26,11 @@ message User {
|
|
24
26
|
required string first_name = 1;
|
25
27
|
required string last_name = 2;
|
26
28
|
}
|
29
|
+
```
|
27
30
|
|
28
31
|
Now let's compile that definition to ruby:
|
29
32
|
|
33
|
+
```
|
30
34
|
$ rprotoc defs.proto --ruby_out ./lib
|
31
35
|
```
|
32
36
|
|
data/lib/protobuf.rb
CHANGED
@@ -14,6 +14,19 @@ module Protobuf
|
|
14
14
|
|
15
15
|
module_function
|
16
16
|
|
17
|
+
# Client Host
|
18
|
+
#
|
19
|
+
# Default: `hostname` of the system
|
20
|
+
#
|
21
|
+
# The name or address of the host to use during client RPC calls.
|
22
|
+
def self.client_host
|
23
|
+
@_client_host ||= `hostname`.chomp
|
24
|
+
end
|
25
|
+
|
26
|
+
def self.client_host=(host)
|
27
|
+
@_client_host = host
|
28
|
+
end
|
29
|
+
|
17
30
|
# Connector Type
|
18
31
|
#
|
19
32
|
# Default: socket
|
@@ -9,14 +9,15 @@ module Protobuf
|
|
9
9
|
module Rpc
|
10
10
|
module Connectors
|
11
11
|
DEFAULT_OPTIONS = {
|
12
|
-
:service => nil, # Service
|
13
|
-
:method => nil, # Service method to
|
14
|
-
:host => '127.0.0.1', #
|
15
|
-
:port => '9399', #
|
12
|
+
:service => nil, # Fully-qualified Service class
|
13
|
+
:method => nil, # Service method to invoke
|
14
|
+
:host => '127.0.0.1', # The hostname or address of the service (usually overridden or pre-configured)
|
15
|
+
:port => '9399', # The port of the service (usually overridden or pre-configured)
|
16
16
|
:request => nil, # The request object sent by the client
|
17
17
|
:request_type => nil, # The request type expected by the client
|
18
18
|
:response_type => nil, # The response type expected by the client
|
19
|
-
:timeout => 30
|
19
|
+
:timeout => 30, # The default timeout for the request, also handled by client.rb
|
20
|
+
:client_host => nil # The hostname or address of this client
|
20
21
|
}
|
21
22
|
|
22
23
|
class Base
|
@@ -11,6 +11,10 @@ module Protobuf
|
|
11
11
|
end
|
12
12
|
end
|
13
13
|
|
14
|
+
def request_caller
|
15
|
+
@options[:client_host] || ::Protobuf.client_host
|
16
|
+
end
|
17
|
+
|
14
18
|
def complete
|
15
19
|
@stats.stop
|
16
20
|
log_info { @stats.to_s }
|
@@ -101,21 +105,21 @@ module Protobuf
|
|
101
105
|
fail(:RPC_ERROR, "Connection error: #{e.message}")
|
102
106
|
end
|
103
107
|
|
104
|
-
def
|
105
|
-
validate_request_type
|
108
|
+
def request_bytes
|
109
|
+
validate_request_type!
|
110
|
+
fields = { :service_name => @options[:service].name,
|
111
|
+
:method_name => @options[:method].to_s,
|
112
|
+
:request_proto => @options[:request],
|
113
|
+
:caller => request_caller }
|
106
114
|
|
107
|
-
return ::Protobuf::Socketrpc::Request.new(
|
108
|
-
:service_name => @options[:service].name,
|
109
|
-
:method_name => @options[:method].to_s,
|
110
|
-
:request_proto => @options[:request]
|
111
|
-
).serialize_to_string
|
115
|
+
return ::Protobuf::Socketrpc::Request.new(fields).serialize_to_string
|
112
116
|
rescue => e
|
113
117
|
fail(:INVALID_REQUEST_PROTO, "Could not set request proto: #{e.message}")
|
114
118
|
end
|
115
119
|
|
116
120
|
def setup_connection
|
117
121
|
initialize_stats
|
118
|
-
@request_data =
|
122
|
+
@request_data = request_bytes
|
119
123
|
end
|
120
124
|
|
121
125
|
def succeed(response)
|
@@ -129,7 +133,7 @@ module Protobuf
|
|
129
133
|
complete
|
130
134
|
end
|
131
135
|
|
132
|
-
def validate_request_type
|
136
|
+
def validate_request_type!
|
133
137
|
unless @options[:request].class == @options[:request_type]
|
134
138
|
expected = @options[:request_type].name
|
135
139
|
actual = @options[:request].class.name
|
@@ -138,13 +142,13 @@ module Protobuf
|
|
138
142
|
end
|
139
143
|
|
140
144
|
def verify_callbacks
|
141
|
-
|
145
|
+
unless any_callbacks?
|
142
146
|
log_debug { sign_message("No callbacks set, using data_callback") }
|
143
147
|
@success_cb = @failure_cb = self.method(:data_callback)
|
144
148
|
end
|
145
149
|
end
|
146
150
|
|
147
|
-
def verify_options
|
151
|
+
def verify_options!
|
148
152
|
# Verify the options that are necessary and merge them in
|
149
153
|
[:service, :method, :host, :port].each do |opt|
|
150
154
|
fail(:RPC_ERROR, "Invalid client connection configuration. #{opt} must be a defined option.") if @options[opt].nil?
|
@@ -17,7 +17,7 @@ module Protobuf
|
|
17
17
|
@failure_cb = failure_cb
|
18
18
|
@options = DEFAULT_OPTIONS.merge(options)
|
19
19
|
@response_buffer = ::Protobuf::Rpc::Buffer.new(:read)
|
20
|
-
verify_options
|
20
|
+
verify_options!
|
21
21
|
|
22
22
|
log_debug { sign_message("Client Initialized: #{options.inspect}") }
|
23
23
|
rescue => e
|
data/lib/protobuf/rpc/rpc.pb.rb
CHANGED
@@ -1,78 +1,6 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
#
|
4
|
-
# //
|
5
|
-
# // Permission is hereby granted, free of charge, to any person obtaining a copy
|
6
|
-
# // of this software and associated documentation files (the "Software"), to deal
|
7
|
-
# // in the Software without restriction, including without limitation the rights
|
8
|
-
# // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
9
|
-
# // copies of the Software, and to permit persons to whom the Software is
|
10
|
-
# // furnished to do so, subject to the following conditions:
|
11
|
-
# //
|
12
|
-
# // The above copyright notice and this permission notice shall be included in
|
13
|
-
# // all copies or substantial portions of the Software.
|
14
|
-
# //
|
15
|
-
# // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
16
|
-
# // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
17
|
-
# // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
18
|
-
# // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
19
|
-
# // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
20
|
-
# // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
21
|
-
# // THE SOFTWARE.
|
22
|
-
#
|
23
|
-
# // Author: Shardul Deo
|
24
|
-
# //
|
25
|
-
# // Protobufs needed for socket rpcs.
|
26
|
-
#
|
27
|
-
# package protobuf.socketrpc;
|
28
|
-
#
|
29
|
-
# message Request {
|
30
|
-
#
|
31
|
-
# // RPC service full name
|
32
|
-
# required string service_name = 1;
|
33
|
-
#
|
34
|
-
# // RPC method name
|
35
|
-
# required string method_name = 2;
|
36
|
-
#
|
37
|
-
# // RPC request proto
|
38
|
-
# required bytes request_proto = 3;
|
39
|
-
# }
|
40
|
-
#
|
41
|
-
# message Response {
|
42
|
-
#
|
43
|
-
# // RPC response proto
|
44
|
-
# optional bytes response_proto = 1;
|
45
|
-
#
|
46
|
-
# // Error, if any
|
47
|
-
# optional string error = 2;
|
48
|
-
#
|
49
|
-
# // Was callback invoked
|
50
|
-
# optional bool callback = 3 [default = false];
|
51
|
-
#
|
52
|
-
# // Error Reason
|
53
|
-
# optional ErrorReason error_reason = 4;
|
54
|
-
# }
|
55
|
-
#
|
56
|
-
# // Possible error reasons
|
57
|
-
# // The server-side errors are returned in the response from the server.
|
58
|
-
# // The client-side errors are returned by the client-side code when it doesn't
|
59
|
-
# // have a response from the server.
|
60
|
-
# enum ErrorReason {
|
61
|
-
#
|
62
|
-
# // Server-side errors
|
63
|
-
# BAD_REQUEST_DATA = 0; // Server received bad request data
|
64
|
-
# BAD_REQUEST_PROTO = 1; // Server received bad request proto
|
65
|
-
# SERVICE_NOT_FOUND = 2; // Service not found on server
|
66
|
-
# METHOD_NOT_FOUND = 3; // Method not found on server
|
67
|
-
# RPC_ERROR = 4; // Rpc threw exception on server
|
68
|
-
# RPC_FAILED = 5; // Rpc failed on server
|
69
|
-
#
|
70
|
-
# // Client-side errors (these are returned by the client-side code)
|
71
|
-
# INVALID_REQUEST_PROTO = 6; // Rpc was called with invalid request proto
|
72
|
-
# BAD_RESPONSE_PROTO = 7; // Server returned a bad response proto
|
73
|
-
# UNKNOWN_HOST = 8; // Could not find supplied host
|
74
|
-
# IO_ERROR = 9; // I/O error while communicating with server
|
75
|
-
# }
|
1
|
+
##
|
2
|
+
# This file is auto-generated. DO NOT EDIT!
|
3
|
+
#
|
76
4
|
require 'protobuf/message'
|
77
5
|
|
78
6
|
module Protobuf
|
@@ -91,28 +19,35 @@ module Protobuf
|
|
91
19
|
##
|
92
20
|
# Enum Values
|
93
21
|
#
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
|
22
|
+
class ErrorReason
|
23
|
+
define :BAD_REQUEST_DATA, 0
|
24
|
+
define :BAD_REQUEST_PROTO, 1
|
25
|
+
define :SERVICE_NOT_FOUND, 2
|
26
|
+
define :METHOD_NOT_FOUND, 3
|
27
|
+
define :RPC_ERROR, 4
|
28
|
+
define :RPC_FAILED, 5
|
29
|
+
define :INVALID_REQUEST_PROTO, 6
|
30
|
+
define :BAD_RESPONSE_PROTO, 7
|
31
|
+
define :UNKNOWN_HOST, 8
|
32
|
+
define :IO_ERROR, 9
|
33
|
+
end
|
104
34
|
|
105
35
|
##
|
106
36
|
# Message Fields
|
107
37
|
#
|
108
|
-
|
109
|
-
|
110
|
-
|
38
|
+
class Request
|
39
|
+
required ::Protobuf::Field::StringField, :service_name, 1
|
40
|
+
required ::Protobuf::Field::StringField, :method_name, 2
|
41
|
+
optional ::Protobuf::Field::BytesField, :request_proto, 3
|
42
|
+
optional ::Protobuf::Field::StringField, :caller, 4
|
43
|
+
end
|
111
44
|
|
112
|
-
|
113
|
-
|
114
|
-
|
115
|
-
|
45
|
+
class Response
|
46
|
+
optional ::Protobuf::Field::BytesField, :response_proto, 1
|
47
|
+
optional ::Protobuf::Field::StringField, :error, 2
|
48
|
+
optional ::Protobuf::Field::BoolField, :callback, 3, :default => false
|
49
|
+
optional ::Protobuf::Socketrpc::ErrorReason, :error_reason, 4
|
50
|
+
end
|
116
51
|
|
117
52
|
end
|
118
53
|
end
|
data/lib/protobuf/rpc/server.rb
CHANGED
@@ -14,7 +14,6 @@ module Protobuf
|
|
14
14
|
@request = ::Protobuf::Socketrpc::Request.new
|
15
15
|
@response = ::Protobuf::Socketrpc::Response.new
|
16
16
|
@stats = Protobuf::Rpc::Stat.new(:SERVER)
|
17
|
-
set_peer
|
18
17
|
end
|
19
18
|
|
20
19
|
def disable_gc!
|
@@ -25,12 +24,11 @@ module Protobuf
|
|
25
24
|
::GC.enable && ::GC.start if ::Protobuf.gc_pause_server_request?
|
26
25
|
end
|
27
26
|
|
28
|
-
# no-op, implemented by including class if desired.
|
29
|
-
def set_peer; end
|
30
|
-
|
31
27
|
# Invoke the service method dictated by the proto wrapper request object
|
32
28
|
def handle_client
|
33
29
|
parse_request_from_buffer
|
30
|
+
@stats.client = @request.caller
|
31
|
+
|
34
32
|
@dispatcher = ::Protobuf::Rpc::ServiceDispatcher.new(@request)
|
35
33
|
@stats.dispatcher = @dispatcher
|
36
34
|
|
@@ -74,7 +74,7 @@ module Protobuf
|
|
74
74
|
client, sockaddr = @server.accept
|
75
75
|
@listen_fds << client
|
76
76
|
else
|
77
|
-
|
77
|
+
unless @working.include?(client)
|
78
78
|
@working << @listen_fds.delete(client)
|
79
79
|
log_debug { sign_message("Working") }
|
80
80
|
@threads << { :thread => new_worker(client), :socket => client }
|
@@ -29,7 +29,7 @@ module Protobuf
|
|
29
29
|
def handle_request(socket)
|
30
30
|
@request_data = ''
|
31
31
|
zmq_error_check(socket.recv_string(@request_data))
|
32
|
-
log_debug { sign_message("handling request") }
|
32
|
+
log_debug { sign_message("handling request") } unless @request_data.nil?
|
33
33
|
end
|
34
34
|
|
35
35
|
def run
|
data/lib/protobuf/rpc/service.rb
CHANGED
@@ -15,8 +15,6 @@ module Protobuf
|
|
15
15
|
include ::Protobuf::Logger::LogMethods
|
16
16
|
|
17
17
|
|
18
|
-
attr_reader :response, :rpc
|
19
|
-
|
20
18
|
DEFAULT_HOST = '127.0.0.1'.freeze
|
21
19
|
DEFAULT_PORT = 9399
|
22
20
|
|
@@ -102,23 +100,26 @@ module Protobuf
|
|
102
100
|
# Instance Methods
|
103
101
|
#
|
104
102
|
|
103
|
+
attr_reader :response, :method_name, :client_host
|
104
|
+
|
105
105
|
# Initialize a service with the rpc endpoint name and the bytes
|
106
106
|
# for the request.
|
107
|
-
def initialize(
|
108
|
-
@
|
109
|
-
@
|
107
|
+
def initialize(method_name, request_bytes, client_host = nil)
|
108
|
+
@method_name = method_name
|
109
|
+
@client_host = client_host
|
110
|
+
@_request_bytes = request_bytes
|
110
111
|
end
|
111
112
|
|
112
113
|
# Register a failure callback for use when rpc_failed is invoked.
|
113
114
|
#
|
114
115
|
def on_rpc_failed(callable)
|
115
|
-
@
|
116
|
+
@_rpc_failed_callback ||= callable
|
116
117
|
end
|
117
118
|
|
118
119
|
# Response object for this rpc cycle. Not assignable.
|
119
120
|
#
|
120
121
|
def response
|
121
|
-
@_response ||=
|
122
|
+
@_response ||= response_type.new
|
122
123
|
end
|
123
124
|
|
124
125
|
# Convenience method to get back to class method.
|
@@ -144,18 +145,26 @@ module Protobuf
|
|
144
145
|
|
145
146
|
private
|
146
147
|
|
148
|
+
def response_type
|
149
|
+
@_response_type ||= rpcs[@method_name].response_type
|
150
|
+
end
|
151
|
+
|
147
152
|
# Request object for this rpc cycle. Not assignable.
|
148
153
|
#
|
149
154
|
def request
|
150
|
-
@_request ||= if @
|
151
|
-
|
155
|
+
@_request ||= if @_request_bytes.present?
|
156
|
+
request_type.new.parse_from_string(@_request_bytes)
|
152
157
|
else
|
153
|
-
|
158
|
+
request_type.new
|
154
159
|
end
|
155
160
|
rescue => e
|
156
161
|
raise BadRequestProto, "Unable to parse request: #{e.message}"
|
157
162
|
end
|
158
163
|
|
164
|
+
def request_type
|
165
|
+
@_request_type ||= rpcs[@method_name].request_type
|
166
|
+
end
|
167
|
+
|
159
168
|
# Sugar to make an rpc method feel like a controller method.
|
160
169
|
# If this method is not called, the response will be the memoized
|
161
170
|
# object returned by the response reader.
|
@@ -165,10 +174,22 @@ module Protobuf
|
|
165
174
|
end
|
166
175
|
alias_method :return_from_whence_you_came, :respond_with
|
167
176
|
|
177
|
+
# Renamed attribute from prior implementaiton due to lack of clarity
|
178
|
+
# in what the variable contained. DEPRECATED.
|
179
|
+
def rpc
|
180
|
+
if ::Protobuf.print_deprecation_warnings?
|
181
|
+
$stderr.puts <<-ERROR
|
182
|
+
[WARNING] Service#rpc method has been deprecated
|
183
|
+
and will be removed in a future version of protobuf.
|
184
|
+
ERROR
|
185
|
+
end
|
186
|
+
@method_name
|
187
|
+
end
|
188
|
+
|
168
189
|
# Automatically fail a service method.
|
169
190
|
#
|
170
191
|
def rpc_failed(message)
|
171
|
-
@
|
192
|
+
@_rpc_failed_callback.call(message)
|
172
193
|
end
|
173
194
|
|
174
195
|
end
|
@@ -74,7 +74,7 @@ module Protobuf
|
|
74
74
|
request_proto = outer_request.has_field?(:request_proto) ? outer_request.request_proto : nil
|
75
75
|
|
76
76
|
if service_klass.rpc_method?(method_name)
|
77
|
-
self.service = service_klass.new(method_name, request_proto)
|
77
|
+
self.service = service_klass.new(method_name, request_proto, outer_request.caller)
|
78
78
|
self.callable_method = service.callable_rpc_method(method_name)
|
79
79
|
self.definition = service.rpcs[method_name]
|
80
80
|
else
|
data/lib/protobuf/rpc/stat.rb
CHANGED
@@ -14,12 +14,12 @@ module Protobuf
|
|
14
14
|
start
|
15
15
|
end
|
16
16
|
|
17
|
-
def client=(
|
18
|
-
@client =
|
17
|
+
def client=(client_host)
|
18
|
+
@client = client_host
|
19
19
|
end
|
20
20
|
|
21
21
|
def client
|
22
|
-
@client
|
22
|
+
@client || nil
|
23
23
|
end
|
24
24
|
|
25
25
|
def method_name
|
@@ -47,7 +47,7 @@ module Protobuf
|
|
47
47
|
end
|
48
48
|
|
49
49
|
def stop
|
50
|
-
start
|
50
|
+
start unless @start_time
|
51
51
|
@end_time ||= Time.now
|
52
52
|
end
|
53
53
|
|
data/lib/protobuf/version.rb
CHANGED
data/proto/rpc.proto
CHANGED
@@ -18,56 +18,45 @@
|
|
18
18
|
// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
19
19
|
// THE SOFTWARE.
|
20
20
|
|
21
|
-
//
|
21
|
+
// Authors: Shardul Deo, BJ Neilsen
|
22
22
|
//
|
23
23
|
// Protobufs needed for socket rpcs.
|
24
24
|
|
25
25
|
package protobuf.socketrpc;
|
26
26
|
|
27
|
-
message Request
|
28
|
-
|
29
|
-
//
|
30
|
-
required string
|
31
|
-
|
32
|
-
//
|
33
|
-
required string method_name = 2;
|
34
|
-
|
35
|
-
// RPC request proto
|
36
|
-
optional bytes request_proto = 3;
|
27
|
+
message Request
|
28
|
+
{
|
29
|
+
required string service_name = 1; // Fully- qualified Service class name
|
30
|
+
required string method_name = 2; // Service method to invoke
|
31
|
+
optional bytes request_proto = 3; // Serialized request bytes
|
32
|
+
optional string caller = 4; // Calling hostname or address
|
37
33
|
}
|
38
34
|
|
39
|
-
message Response
|
40
|
-
|
41
|
-
//
|
42
|
-
optional
|
43
|
-
|
44
|
-
// Error
|
45
|
-
optional string error = 2;
|
46
|
-
|
47
|
-
// Was callback invoked
|
48
|
-
optional bool callback = 3 [default = false];
|
49
|
-
|
50
|
-
// Error Reason
|
51
|
-
optional ErrorReason error_reason = 4;
|
35
|
+
message Response
|
36
|
+
{
|
37
|
+
optional bytes response_proto = 1; // Serialized response
|
38
|
+
optional string error = 2; // Error message, if any
|
39
|
+
optional bool callback = 3 [default = false]; // Was callback invoked (not sure what this is for)
|
40
|
+
optional ErrorReason error_reason = 4; // Error Reason
|
52
41
|
}
|
53
42
|
|
54
43
|
// Possible error reasons
|
55
44
|
// The server-side errors are returned in the response from the server.
|
56
|
-
// The client-side errors are returned by the client-side code when it doesn't
|
45
|
+
// The client-side errors are returned by the client-side code when it doesn't
|
57
46
|
// have a response from the server.
|
58
|
-
enum ErrorReason
|
59
|
-
|
47
|
+
enum ErrorReason
|
48
|
+
{
|
60
49
|
// Server-side errors
|
61
|
-
BAD_REQUEST_DATA = 0;
|
62
|
-
BAD_REQUEST_PROTO = 1;
|
63
|
-
SERVICE_NOT_FOUND = 2;
|
64
|
-
METHOD_NOT_FOUND = 3;
|
65
|
-
RPC_ERROR = 4;
|
66
|
-
RPC_FAILED = 5;
|
67
|
-
|
50
|
+
BAD_REQUEST_DATA = 0; // Server received bad request data
|
51
|
+
BAD_REQUEST_PROTO = 1; // Server received bad request proto
|
52
|
+
SERVICE_NOT_FOUND = 2; // Service not found on server
|
53
|
+
METHOD_NOT_FOUND = 3; // Method not found on server
|
54
|
+
RPC_ERROR = 4; // Rpc threw exception on server
|
55
|
+
RPC_FAILED = 5; // Rpc failed on server
|
56
|
+
|
68
57
|
// Client-side errors (these are returned by the client-side code)
|
69
|
-
INVALID_REQUEST_PROTO = 6;
|
70
|
-
BAD_RESPONSE_PROTO = 7;
|
71
|
-
UNKNOWN_HOST = 8;
|
72
|
-
IO_ERROR = 9;
|
58
|
+
INVALID_REQUEST_PROTO = 6; // Rpc was called with invalid request proto
|
59
|
+
BAD_RESPONSE_PROTO = 7; // Server returned a bad response proto
|
60
|
+
UNKNOWN_HOST = 8; // Could not find supplied host
|
61
|
+
IO_ERROR = 9; // I/O error while communicating with server
|
73
62
|
}
|
@@ -10,20 +10,23 @@ describe Protobuf::Rpc::Connectors::Common do
|
|
10
10
|
end
|
11
11
|
end
|
12
12
|
|
13
|
-
|
13
|
+
let(:subject_options) { {} }
|
14
|
+
|
15
|
+
subject { @subject ||= common_class.new(subject_options) }
|
14
16
|
|
15
17
|
context "API" do
|
16
|
-
specify{ subject.respond_to?(:any_callbacks?).should be_true }
|
17
|
-
specify{ subject.respond_to?(:
|
18
|
-
specify{ subject.respond_to?(:
|
19
|
-
specify{ subject.respond_to?(:
|
20
|
-
specify{ subject.respond_to?(:
|
21
|
-
specify{ subject.respond_to?(:
|
22
|
-
specify{ subject.respond_to?(:
|
23
|
-
specify{ subject.respond_to?(:
|
18
|
+
specify { subject.respond_to?(:any_callbacks?).should be_true }
|
19
|
+
specify { subject.respond_to?(:request_caller).should be_true }
|
20
|
+
specify { subject.respond_to?(:data_callback).should be_true }
|
21
|
+
specify { subject.respond_to?(:error).should be_true }
|
22
|
+
specify { subject.respond_to?(:fail).should be_true }
|
23
|
+
specify { subject.respond_to?(:complete).should be_true }
|
24
|
+
specify { subject.respond_to?(:parse_response).should be_true }
|
25
|
+
specify { subject.respond_to?(:verify_options!).should be_true }
|
26
|
+
specify { subject.respond_to?(:verify_callbacks).should be_true }
|
24
27
|
end
|
25
28
|
|
26
|
-
|
29
|
+
describe "#any_callbacks?" do
|
27
30
|
|
28
31
|
[:@complete_cb, :@success_cb, :@failure_cb].each do |cb|
|
29
32
|
it "returns true if #{cb} is provided" do
|
@@ -42,7 +45,19 @@ describe Protobuf::Rpc::Connectors::Common do
|
|
42
45
|
|
43
46
|
end
|
44
47
|
|
45
|
-
|
48
|
+
describe '#request_caller' do
|
49
|
+
its(:request_caller) { should eq ::Protobuf.client_host }
|
50
|
+
|
51
|
+
context 'when "client_host" option is given to initializer' do
|
52
|
+
let(:hostname) { 'myhost.myserver.com' }
|
53
|
+
let(:subject_options) { { :client_host => hostname } }
|
54
|
+
|
55
|
+
its(:request_caller) { should_not eq ::Protobuf.client_host }
|
56
|
+
its(:request_caller) { should eq hostname }
|
57
|
+
end
|
58
|
+
end
|
59
|
+
|
60
|
+
describe "#data_callback" do
|
46
61
|
it "changes state to use the data callback" do
|
47
62
|
subject.data_callback("data")
|
48
63
|
subject.instance_variable_get(:@used_data_callback).should be_true
|
@@ -54,7 +69,28 @@ describe Protobuf::Rpc::Connectors::Common do
|
|
54
69
|
end
|
55
70
|
end
|
56
71
|
|
57
|
-
|
72
|
+
describe '#request_bytes' do
|
73
|
+
let(:service) { Test::ResourceService }
|
74
|
+
let(:method) { :find }
|
75
|
+
let(:request) { '' }
|
76
|
+
let(:client_host) { 'myhost.myservice.com' }
|
77
|
+
let(:subject_options) { { :service => service,
|
78
|
+
:method => method,
|
79
|
+
:request => request,
|
80
|
+
:client_host => client_host } }
|
81
|
+
|
82
|
+
let(:expected) { ::Protobuf::Socketrpc::Request.new({ :service_name => service.name,
|
83
|
+
:method_name => 'find',
|
84
|
+
:request_proto => '',
|
85
|
+
:caller => client_host }) }
|
86
|
+
|
87
|
+
before { subject.stub(:validate_request_type!).and_return(true) }
|
88
|
+
before { subject.should_not_receive(:fail) }
|
89
|
+
|
90
|
+
its(:request_bytes) { should eq expected.serialize_to_string }
|
91
|
+
end
|
92
|
+
|
93
|
+
describe "#verify_callbacks" do
|
58
94
|
|
59
95
|
it "sets @failure_cb to #data_callback when no callbacks are defined" do
|
60
96
|
subject.verify_callbacks
|
data/spec/lib/protobuf_spec.rb
CHANGED
@@ -3,6 +3,22 @@ require 'protobuf'
|
|
3
3
|
|
4
4
|
describe ::Protobuf do
|
5
5
|
|
6
|
+
describe '.client_host' do
|
7
|
+
after { ::Protobuf.instance_variable_set(:@_client_host, nil) }
|
8
|
+
|
9
|
+
subject { ::Protobuf.client_host }
|
10
|
+
|
11
|
+
context 'when client_host is not pre-configured' do
|
12
|
+
it { should eq `hostname`.chomp }
|
13
|
+
end
|
14
|
+
|
15
|
+
context 'when client_host is pre-configured' do
|
16
|
+
let(:hostname) { 'override.myhost.com' }
|
17
|
+
before { ::Protobuf.client_host = hostname }
|
18
|
+
it { should eq hostname }
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
6
22
|
describe '.connector_type' do
|
7
23
|
before { described_class.instance_variable_set(:@_connector_type, nil) }
|
8
24
|
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: protobuf
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.5.
|
4
|
+
version: 2.5.1
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -10,11 +10,11 @@ authors:
|
|
10
10
|
autorequire:
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
|
-
date: 2012-11-
|
13
|
+
date: 2012-11-29 00:00:00.000000000Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: activesupport
|
17
|
-
requirement: !ruby/object:Gem::Requirement
|
17
|
+
requirement: &2152959680 !ruby/object:Gem::Requirement
|
18
18
|
none: false
|
19
19
|
requirements:
|
20
20
|
- - ! '>='
|
@@ -22,15 +22,10 @@ dependencies:
|
|
22
22
|
version: '0'
|
23
23
|
type: :runtime
|
24
24
|
prerelease: false
|
25
|
-
version_requirements:
|
26
|
-
none: false
|
27
|
-
requirements:
|
28
|
-
- - ! '>='
|
29
|
-
- !ruby/object:Gem::Version
|
30
|
-
version: '0'
|
25
|
+
version_requirements: *2152959680
|
31
26
|
- !ruby/object:Gem::Dependency
|
32
27
|
name: ffi
|
33
|
-
requirement: !ruby/object:Gem::Requirement
|
28
|
+
requirement: &2152958340 !ruby/object:Gem::Requirement
|
34
29
|
none: false
|
35
30
|
requirements:
|
36
31
|
- - ! '>='
|
@@ -38,15 +33,10 @@ dependencies:
|
|
38
33
|
version: '0'
|
39
34
|
type: :runtime
|
40
35
|
prerelease: false
|
41
|
-
version_requirements:
|
42
|
-
none: false
|
43
|
-
requirements:
|
44
|
-
- - ! '>='
|
45
|
-
- !ruby/object:Gem::Version
|
46
|
-
version: '0'
|
36
|
+
version_requirements: *2152958340
|
47
37
|
- !ruby/object:Gem::Dependency
|
48
38
|
name: multi_json
|
49
|
-
requirement: !ruby/object:Gem::Requirement
|
39
|
+
requirement: &2152956800 !ruby/object:Gem::Requirement
|
50
40
|
none: false
|
51
41
|
requirements:
|
52
42
|
- - ! '>='
|
@@ -54,15 +44,10 @@ dependencies:
|
|
54
44
|
version: '0'
|
55
45
|
type: :runtime
|
56
46
|
prerelease: false
|
57
|
-
version_requirements:
|
58
|
-
none: false
|
59
|
-
requirements:
|
60
|
-
- - ! '>='
|
61
|
-
- !ruby/object:Gem::Version
|
62
|
-
version: '0'
|
47
|
+
version_requirements: *2152956800
|
63
48
|
- !ruby/object:Gem::Dependency
|
64
49
|
name: thor
|
65
|
-
requirement: !ruby/object:Gem::Requirement
|
50
|
+
requirement: &2152954460 !ruby/object:Gem::Requirement
|
66
51
|
none: false
|
67
52
|
requirements:
|
68
53
|
- - ! '>='
|
@@ -70,15 +55,10 @@ dependencies:
|
|
70
55
|
version: '0'
|
71
56
|
type: :runtime
|
72
57
|
prerelease: false
|
73
|
-
version_requirements:
|
74
|
-
none: false
|
75
|
-
requirements:
|
76
|
-
- - ! '>='
|
77
|
-
- !ruby/object:Gem::Version
|
78
|
-
version: '0'
|
58
|
+
version_requirements: *2152954460
|
79
59
|
- !ruby/object:Gem::Dependency
|
80
60
|
name: eventmachine
|
81
|
-
requirement: !ruby/object:Gem::Requirement
|
61
|
+
requirement: &2152953240 !ruby/object:Gem::Requirement
|
82
62
|
none: false
|
83
63
|
requirements:
|
84
64
|
- - ! '>='
|
@@ -86,15 +66,10 @@ dependencies:
|
|
86
66
|
version: '0'
|
87
67
|
type: :development
|
88
68
|
prerelease: false
|
89
|
-
version_requirements:
|
90
|
-
none: false
|
91
|
-
requirements:
|
92
|
-
- - ! '>='
|
93
|
-
- !ruby/object:Gem::Version
|
94
|
-
version: '0'
|
69
|
+
version_requirements: *2152953240
|
95
70
|
- !ruby/object:Gem::Dependency
|
96
71
|
name: ffi-rzmq
|
97
|
-
requirement: !ruby/object:Gem::Requirement
|
72
|
+
requirement: &2152951540 !ruby/object:Gem::Requirement
|
98
73
|
none: false
|
99
74
|
requirements:
|
100
75
|
- - ! '>='
|
@@ -102,15 +77,10 @@ dependencies:
|
|
102
77
|
version: '0'
|
103
78
|
type: :development
|
104
79
|
prerelease: false
|
105
|
-
version_requirements:
|
106
|
-
none: false
|
107
|
-
requirements:
|
108
|
-
- - ! '>='
|
109
|
-
- !ruby/object:Gem::Version
|
110
|
-
version: '0'
|
80
|
+
version_requirements: *2152951540
|
111
81
|
- !ruby/object:Gem::Dependency
|
112
82
|
name: pry
|
113
|
-
requirement: !ruby/object:Gem::Requirement
|
83
|
+
requirement: &2152950140 !ruby/object:Gem::Requirement
|
114
84
|
none: false
|
115
85
|
requirements:
|
116
86
|
- - ! '>='
|
@@ -118,15 +88,10 @@ dependencies:
|
|
118
88
|
version: '0'
|
119
89
|
type: :development
|
120
90
|
prerelease: false
|
121
|
-
version_requirements:
|
122
|
-
none: false
|
123
|
-
requirements:
|
124
|
-
- - ! '>='
|
125
|
-
- !ruby/object:Gem::Version
|
126
|
-
version: '0'
|
91
|
+
version_requirements: *2152950140
|
127
92
|
- !ruby/object:Gem::Dependency
|
128
93
|
name: pry-nav
|
129
|
-
requirement: !ruby/object:Gem::Requirement
|
94
|
+
requirement: &2152948840 !ruby/object:Gem::Requirement
|
130
95
|
none: false
|
131
96
|
requirements:
|
132
97
|
- - ! '>='
|
@@ -134,15 +99,10 @@ dependencies:
|
|
134
99
|
version: '0'
|
135
100
|
type: :development
|
136
101
|
prerelease: false
|
137
|
-
version_requirements:
|
138
|
-
none: false
|
139
|
-
requirements:
|
140
|
-
- - ! '>='
|
141
|
-
- !ruby/object:Gem::Version
|
142
|
-
version: '0'
|
102
|
+
version_requirements: *2152948840
|
143
103
|
- !ruby/object:Gem::Dependency
|
144
104
|
name: rake
|
145
|
-
requirement: !ruby/object:Gem::Requirement
|
105
|
+
requirement: &2152947240 !ruby/object:Gem::Requirement
|
146
106
|
none: false
|
147
107
|
requirements:
|
148
108
|
- - ! '>='
|
@@ -150,15 +110,10 @@ dependencies:
|
|
150
110
|
version: '0'
|
151
111
|
type: :development
|
152
112
|
prerelease: false
|
153
|
-
version_requirements:
|
154
|
-
none: false
|
155
|
-
requirements:
|
156
|
-
- - ! '>='
|
157
|
-
- !ruby/object:Gem::Version
|
158
|
-
version: '0'
|
113
|
+
version_requirements: *2152947240
|
159
114
|
- !ruby/object:Gem::Dependency
|
160
115
|
name: rake-compiler
|
161
|
-
requirement: !ruby/object:Gem::Requirement
|
116
|
+
requirement: &2152946020 !ruby/object:Gem::Requirement
|
162
117
|
none: false
|
163
118
|
requirements:
|
164
119
|
- - ! '>='
|
@@ -166,15 +121,10 @@ dependencies:
|
|
166
121
|
version: '0'
|
167
122
|
type: :development
|
168
123
|
prerelease: false
|
169
|
-
version_requirements:
|
170
|
-
none: false
|
171
|
-
requirements:
|
172
|
-
- - ! '>='
|
173
|
-
- !ruby/object:Gem::Version
|
174
|
-
version: '0'
|
124
|
+
version_requirements: *2152946020
|
175
125
|
- !ruby/object:Gem::Dependency
|
176
126
|
name: rspec
|
177
|
-
requirement: !ruby/object:Gem::Requirement
|
127
|
+
requirement: &2152871420 !ruby/object:Gem::Requirement
|
178
128
|
none: false
|
179
129
|
requirements:
|
180
130
|
- - ! '>='
|
@@ -182,15 +132,10 @@ dependencies:
|
|
182
132
|
version: '0'
|
183
133
|
type: :development
|
184
134
|
prerelease: false
|
185
|
-
version_requirements:
|
186
|
-
none: false
|
187
|
-
requirements:
|
188
|
-
- - ! '>='
|
189
|
-
- !ruby/object:Gem::Version
|
190
|
-
version: '0'
|
135
|
+
version_requirements: *2152871420
|
191
136
|
- !ruby/object:Gem::Dependency
|
192
137
|
name: simplecov
|
193
|
-
requirement: !ruby/object:Gem::Requirement
|
138
|
+
requirement: &2152865540 !ruby/object:Gem::Requirement
|
194
139
|
none: false
|
195
140
|
requirements:
|
196
141
|
- - ! '>='
|
@@ -198,15 +143,10 @@ dependencies:
|
|
198
143
|
version: '0'
|
199
144
|
type: :development
|
200
145
|
prerelease: false
|
201
|
-
version_requirements:
|
202
|
-
none: false
|
203
|
-
requirements:
|
204
|
-
- - ! '>='
|
205
|
-
- !ruby/object:Gem::Version
|
206
|
-
version: '0'
|
146
|
+
version_requirements: *2152865540
|
207
147
|
- !ruby/object:Gem::Dependency
|
208
148
|
name: yard
|
209
|
-
requirement: !ruby/object:Gem::Requirement
|
149
|
+
requirement: &2152816060 !ruby/object:Gem::Requirement
|
210
150
|
none: false
|
211
151
|
requirements:
|
212
152
|
- - ! '>='
|
@@ -214,12 +154,7 @@ dependencies:
|
|
214
154
|
version: '0'
|
215
155
|
type: :development
|
216
156
|
prerelease: false
|
217
|
-
version_requirements:
|
218
|
-
none: false
|
219
|
-
requirements:
|
220
|
-
- - ! '>='
|
221
|
-
- !ruby/object:Gem::Version
|
222
|
-
version: '0'
|
157
|
+
version_requirements: *2152816060
|
223
158
|
description: Google Protocol Buffers v2.4.1 Serialization and RPC implementation for
|
224
159
|
Ruby.
|
225
160
|
email:
|
@@ -402,7 +337,6 @@ files:
|
|
402
337
|
- lib/protobuf/version.rb
|
403
338
|
- lib/protobuf/wire_type.rb
|
404
339
|
- lib/protobuf/zmq.rb
|
405
|
-
- proto/rpc.pb.rb
|
406
340
|
- proto/rpc.proto
|
407
341
|
- protobuf.gemspec
|
408
342
|
- spec/benchmark/tasks.rb
|
@@ -498,7 +432,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
498
432
|
version: '0'
|
499
433
|
segments:
|
500
434
|
- 0
|
501
|
-
hash:
|
435
|
+
hash: -4197432233485309916
|
502
436
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
503
437
|
none: false
|
504
438
|
requirements:
|
@@ -507,12 +441,91 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
507
441
|
version: '0'
|
508
442
|
segments:
|
509
443
|
- 0
|
510
|
-
hash:
|
444
|
+
hash: -4197432233485309916
|
511
445
|
requirements: []
|
512
446
|
rubyforge_project:
|
513
|
-
rubygems_version: 1.8.
|
447
|
+
rubygems_version: 1.8.15
|
514
448
|
signing_key:
|
515
449
|
specification_version: 3
|
516
450
|
summary: Google Protocol Buffers v2.4.1 Serialization and RPC implementation for Ruby.
|
517
|
-
test_files:
|
451
|
+
test_files:
|
452
|
+
- spec/benchmark/tasks.rb
|
453
|
+
- spec/functional/embedded_service_spec.rb
|
454
|
+
- spec/functional/evented_server_spec.rb
|
455
|
+
- spec/functional/socket_server_spec.rb
|
456
|
+
- spec/functional/zmq_server_spec.rb
|
457
|
+
- spec/lib/protobuf/cli_spec.rb
|
458
|
+
- spec/lib/protobuf/enum_spec.rb
|
459
|
+
- spec/lib/protobuf/enum_value_spec.rb
|
460
|
+
- spec/lib/protobuf/logger_spec.rb
|
461
|
+
- spec/lib/protobuf/message_spec.rb
|
462
|
+
- spec/lib/protobuf/rpc/client_spec.rb
|
463
|
+
- spec/lib/protobuf/rpc/connector_spec.rb
|
464
|
+
- spec/lib/protobuf/rpc/connectors/base_spec.rb
|
465
|
+
- spec/lib/protobuf/rpc/connectors/common_spec.rb
|
466
|
+
- spec/lib/protobuf/rpc/connectors/socket_spec.rb
|
467
|
+
- spec/lib/protobuf/rpc/connectors/zmq_spec.rb
|
468
|
+
- spec/lib/protobuf/rpc/servers/evented_server_spec.rb
|
469
|
+
- spec/lib/protobuf/rpc/servers/socket_server_spec.rb
|
470
|
+
- spec/lib/protobuf/rpc/servers/zmq/broker_spec.rb
|
471
|
+
- spec/lib/protobuf/rpc/servers/zmq/server_spec.rb
|
472
|
+
- spec/lib/protobuf/rpc/servers/zmq/util_spec.rb
|
473
|
+
- spec/lib/protobuf/rpc/servers/zmq/worker_spec.rb
|
474
|
+
- spec/lib/protobuf/rpc/service_dispatcher_spec.rb
|
475
|
+
- spec/lib/protobuf/rpc/service_filters_spec.rb
|
476
|
+
- spec/lib/protobuf/rpc/service_spec.rb
|
477
|
+
- spec/lib/protobuf_spec.rb
|
478
|
+
- spec/spec_helper.rb
|
479
|
+
- spec/support/all.rb
|
480
|
+
- spec/support/server.rb
|
481
|
+
- spec/support/test/enum.pb.rb
|
482
|
+
- spec/support/test/enum.proto
|
483
|
+
- spec/support/test/resource.pb.rb
|
484
|
+
- spec/support/test/resource.proto
|
485
|
+
- spec/support/test/resource_service.rb
|
486
|
+
- spec/support/test_app_file.rb
|
487
|
+
- spec/support/tolerance_matcher.rb
|
488
|
+
- test/data/data.bin
|
489
|
+
- test/data/data_source.py
|
490
|
+
- test/data/types.bin
|
491
|
+
- test/data/types_source.py
|
492
|
+
- test/data/unk.png
|
493
|
+
- test/proto/addressbook.pb.rb
|
494
|
+
- test/proto/addressbook.proto
|
495
|
+
- test/proto/addressbook_base.pb.rb
|
496
|
+
- test/proto/addressbook_base.proto
|
497
|
+
- test/proto/addressbook_ext.pb.rb
|
498
|
+
- test/proto/addressbook_ext.proto
|
499
|
+
- test/proto/collision.pb.rb
|
500
|
+
- test/proto/collision.proto
|
501
|
+
- test/proto/ext_collision.pb.rb
|
502
|
+
- test/proto/ext_collision.proto
|
503
|
+
- test/proto/ext_range.pb.rb
|
504
|
+
- test/proto/ext_range.proto
|
505
|
+
- test/proto/float_default.proto
|
506
|
+
- test/proto/lowercase.pb.rb
|
507
|
+
- test/proto/lowercase.proto
|
508
|
+
- test/proto/merge.pb.rb
|
509
|
+
- test/proto/merge.proto
|
510
|
+
- test/proto/nested.pb.rb
|
511
|
+
- test/proto/nested.proto
|
512
|
+
- test/proto/optional_field.pb.rb
|
513
|
+
- test/proto/optional_field.proto
|
514
|
+
- test/proto/packed.pb.rb
|
515
|
+
- test/proto/packed.proto
|
516
|
+
- test/proto/rpc.proto
|
517
|
+
- test/proto/types.pb.rb
|
518
|
+
- test/proto/types.proto
|
519
|
+
- test/test_addressbook.rb
|
520
|
+
- test/test_enum_value.rb
|
521
|
+
- test/test_extension.rb
|
522
|
+
- test/test_lowercase.rb
|
523
|
+
- test/test_message.rb
|
524
|
+
- test/test_optional_field.rb
|
525
|
+
- test/test_packed_field.rb
|
526
|
+
- test/test_parse.rb
|
527
|
+
- test/test_repeated_types.rb
|
528
|
+
- test/test_serialize.rb
|
529
|
+
- test/test_standard_message.rb
|
530
|
+
- test/test_types.rb
|
518
531
|
has_rdoc:
|
data/proto/rpc.pb.rb
DELETED
@@ -1,48 +0,0 @@
|
|
1
|
-
##
|
2
|
-
# This file is auto-generated. DO NOT EDIT!
|
3
|
-
#
|
4
|
-
require 'protobuf/message'
|
5
|
-
|
6
|
-
module Protobuf
|
7
|
-
module Socketrpc
|
8
|
-
##
|
9
|
-
# Enum Classes
|
10
|
-
#
|
11
|
-
class ErrorReason < ::Protobuf::Enum; end
|
12
|
-
|
13
|
-
##
|
14
|
-
# Message Classes
|
15
|
-
#
|
16
|
-
class Request < ::Protobuf::Message; end
|
17
|
-
class Response < ::Protobuf::Message; end
|
18
|
-
|
19
|
-
##
|
20
|
-
# Enum Values
|
21
|
-
#
|
22
|
-
::Protobuf::Socketrpc::ErrorReason.define :BAD_REQUEST_DATA, 0
|
23
|
-
::Protobuf::Socketrpc::ErrorReason.define :BAD_REQUEST_PROTO, 1
|
24
|
-
::Protobuf::Socketrpc::ErrorReason.define :SERVICE_NOT_FOUND, 2
|
25
|
-
::Protobuf::Socketrpc::ErrorReason.define :METHOD_NOT_FOUND, 3
|
26
|
-
::Protobuf::Socketrpc::ErrorReason.define :RPC_ERROR, 4
|
27
|
-
::Protobuf::Socketrpc::ErrorReason.define :RPC_FAILED, 5
|
28
|
-
::Protobuf::Socketrpc::ErrorReason.define :INVALID_REQUEST_PROTO, 6
|
29
|
-
::Protobuf::Socketrpc::ErrorReason.define :BAD_RESPONSE_PROTO, 7
|
30
|
-
::Protobuf::Socketrpc::ErrorReason.define :UNKNOWN_HOST, 8
|
31
|
-
::Protobuf::Socketrpc::ErrorReason.define :IO_ERROR, 9
|
32
|
-
|
33
|
-
|
34
|
-
##
|
35
|
-
# Message Fields
|
36
|
-
#
|
37
|
-
::Protobuf::Socketrpc::Request.required(::Protobuf::Field::StringField, :service_name, 1)
|
38
|
-
::Protobuf::Socketrpc::Request.required(::Protobuf::Field::StringField, :method_name, 2)
|
39
|
-
::Protobuf::Socketrpc::Request.optional(::Protobuf::Field::BytesField, :request_proto, 3)
|
40
|
-
|
41
|
-
::Protobuf::Socketrpc::Response.optional(::Protobuf::Field::BytesField, :response_proto, 1)
|
42
|
-
::Protobuf::Socketrpc::Response.optional(::Protobuf::Field::StringField, :error, 2)
|
43
|
-
::Protobuf::Socketrpc::Response.optional(::Protobuf::Field::BoolField, :callback, 3, :default => false)
|
44
|
-
::Protobuf::Socketrpc::Response.optional(::Protobuf::Socketrpc::ErrorReason, :error_reason, 4)
|
45
|
-
|
46
|
-
|
47
|
-
end
|
48
|
-
end
|