protobuf 2.5.0 → 2.5.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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
|