protobuf 1.0.1 → 1.1.0.beta0
Sign up to get free protection for your applications and to get access to all the features.
- data/.gitignore +3 -0
- data/.yardopts +5 -0
- data/Gemfile.lock +25 -10
- data/bin/rpc_server +38 -33
- data/lib/protobuf.rb +22 -3
- data/lib/protobuf/common/logger.rb +6 -8
- data/lib/protobuf/compiler/visitors.rb +8 -9
- data/lib/protobuf/descriptor/descriptor_builder.rb +6 -6
- data/lib/protobuf/ext/eventmachine.rb +2 -4
- data/lib/protobuf/message/message.rb +1 -3
- data/lib/protobuf/rpc/buffer.rb +6 -6
- data/lib/protobuf/rpc/client.rb +59 -21
- data/lib/protobuf/rpc/connector.rb +10 -9
- data/lib/protobuf/rpc/connectors/base.rb +23 -8
- data/lib/protobuf/rpc/connectors/common.rb +155 -0
- data/lib/protobuf/rpc/connectors/em_client.rb +23 -192
- data/lib/protobuf/rpc/connectors/eventmachine.rb +36 -44
- data/lib/protobuf/rpc/connectors/socket.rb +58 -1
- data/lib/protobuf/rpc/error.rb +6 -14
- data/lib/protobuf/rpc/server.rb +72 -99
- data/lib/protobuf/rpc/servers/evented_runner.rb +32 -0
- data/lib/protobuf/rpc/servers/evented_server.rb +29 -0
- data/lib/protobuf/rpc/servers/socket_runner.rb +17 -0
- data/lib/protobuf/rpc/servers/socket_server.rb +145 -0
- data/lib/protobuf/rpc/service.rb +50 -51
- data/lib/protobuf/rpc/stat.rb +2 -2
- data/lib/protobuf/version.rb +1 -1
- data/protobuf.gemspec +9 -4
- data/spec/helper/all.rb +1 -7
- data/spec/helper/server.rb +45 -5
- data/spec/helper/silent_constants.rb +40 -0
- data/spec/proto/test_service.rb +0 -1
- data/spec/proto/test_service_impl.rb +4 -3
- data/spec/spec_helper.rb +19 -6
- data/spec/unit/enum_spec.rb +4 -4
- data/spec/unit/rpc/client_spec.rb +32 -42
- data/spec/unit/rpc/connector_spec.rb +11 -16
- data/spec/unit/rpc/connectors/base_spec.rb +14 -3
- data/spec/unit/rpc/connectors/common_spec.rb +132 -0
- data/spec/unit/rpc/connectors/{eventmachine/client_spec.rb → eventmachine_client_spec.rb} +0 -0
- data/spec/unit/rpc/connectors/socket_spec.rb +49 -0
- data/spec/unit/rpc/servers/evented_server_spec.rb +18 -0
- data/spec/unit/rpc/servers/socket_server_spec.rb +57 -0
- metadata +86 -16
- data/spec/unit/rpc/server_spec.rb +0 -27
data/.gitignore
CHANGED
data/.yardopts
ADDED
data/Gemfile.lock
CHANGED
@@ -1,28 +1,43 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
protobuf (1.0.
|
4
|
+
protobuf (1.1.0.beta0)
|
5
5
|
eventmachine (~> 0.12.10)
|
6
|
+
eventually (~> 0.1.0)
|
7
|
+
json_pure (~> 1.6.4)
|
6
8
|
|
7
9
|
GEM
|
8
10
|
remote: http://rubygems.org/
|
9
11
|
specs:
|
10
|
-
diff-lcs (1.1.
|
12
|
+
diff-lcs (1.1.3)
|
11
13
|
eventmachine (0.12.10)
|
14
|
+
eventually (0.1.0)
|
15
|
+
json_pure (1.6.4)
|
16
|
+
multi_json (1.0.4)
|
12
17
|
rake (0.8.7)
|
13
|
-
|
14
|
-
|
15
|
-
rspec-
|
16
|
-
rspec-
|
17
|
-
|
18
|
-
rspec-
|
18
|
+
redcarpet (1.17.2)
|
19
|
+
rspec (2.8.0)
|
20
|
+
rspec-core (~> 2.8.0)
|
21
|
+
rspec-expectations (~> 2.8.0)
|
22
|
+
rspec-mocks (~> 2.8.0)
|
23
|
+
rspec-core (2.8.0)
|
24
|
+
rspec-expectations (2.8.0)
|
19
25
|
diff-lcs (~> 1.1.2)
|
20
|
-
rspec-mocks (2.
|
26
|
+
rspec-mocks (2.8.0)
|
27
|
+
simplecov (0.5.4)
|
28
|
+
multi_json (~> 1.0.3)
|
29
|
+
simplecov-html (~> 0.5.3)
|
30
|
+
simplecov-html (0.5.3)
|
31
|
+
yard (0.7.4)
|
21
32
|
|
22
33
|
PLATFORMS
|
34
|
+
java
|
23
35
|
ruby
|
24
36
|
|
25
37
|
DEPENDENCIES
|
26
38
|
protobuf!
|
27
39
|
rake (~> 0.8.7)
|
28
|
-
|
40
|
+
redcarpet (~> 1.17.2)
|
41
|
+
rspec (~> 2.8.0)
|
42
|
+
simplecov (~> 0.5.4)
|
43
|
+
yard (~> 0.7.4)
|
data/bin/rpc_server
CHANGED
@@ -3,16 +3,9 @@
|
|
3
3
|
require 'optparse'
|
4
4
|
require 'ostruct'
|
5
5
|
require 'logger'
|
6
|
-
require 'protobuf'
|
7
|
-
require 'protobuf/rpc/
|
8
|
-
|
9
|
-
[:INT, :QUIT, :TERM].each do |sig|
|
10
|
-
trap(sig) do
|
11
|
-
EventMachine.stop_event_loop if EventMachine.reactor_running?
|
12
|
-
Protobuf::Logger.info 'Shutdown complete'
|
13
|
-
$stdout.puts 'Shutdown complete'
|
14
|
-
end
|
15
|
-
end
|
6
|
+
require 'protobuf/version'
|
7
|
+
require 'protobuf/rpc/servers/evented_runner'
|
8
|
+
require 'protobuf/rpc/servers/socket_runner'
|
16
9
|
|
17
10
|
# Default options
|
18
11
|
server = OpenStruct.new({
|
@@ -20,8 +13,11 @@ server = OpenStruct.new({
|
|
20
13
|
:env => ENV['RPC_SERVER_ENV'] || 'development',
|
21
14
|
:host => '127.0.0.1',
|
22
15
|
:port => 9595,
|
16
|
+
:backlog => 100,
|
17
|
+
:threshold => 100,
|
23
18
|
:log => File.expand_path('./protobuf.log'),
|
24
19
|
:level => ::Logger::INFO,
|
20
|
+
:runner => Protobuf::Rpc::EventedRunner,
|
25
21
|
:debug => false
|
26
22
|
})
|
27
23
|
|
@@ -47,6 +43,23 @@ parser = OptionParser.new do |opts|
|
|
47
43
|
opts.on("-v N", "--level=N", Integer, "Log level to use, 0-5 (see http://www.ruby-doc.org/stdlib/libdoc/logger/rdoc/)") do |v|
|
48
44
|
server.level = v.to_i
|
49
45
|
end
|
46
|
+
|
47
|
+
opts.on("-b N", "--backlog=N", Integer, "Backlog for listening socket when using Socket Server") do |v|
|
48
|
+
server.backlog = v.to_i
|
49
|
+
end
|
50
|
+
|
51
|
+
opts.on("-t N", "--threshold=N", Integer, "Multi-threaded Socket Server cleanup threshold") do |v|
|
52
|
+
server.threshold = v.to_i
|
53
|
+
end
|
54
|
+
|
55
|
+
opts.on("-c", "--client_socket", "Socket Mode for client connections (No EventMachine)") do |v|
|
56
|
+
Protobuf::ConnectorType = "Socket"
|
57
|
+
end
|
58
|
+
|
59
|
+
opts.on("-s", "--socket", "Socket Server Mode (No EventMachine)") do |v|
|
60
|
+
Protobuf::ServerType = "SocketServer"
|
61
|
+
server.runner = Protobuf::Rpc::SocketRunner
|
62
|
+
end
|
50
63
|
|
51
64
|
opts.on("-d", "--[no-]debug", "Debug Mode. Override log level to DEBUG.") do |v|
|
52
65
|
server.debug = v
|
@@ -67,49 +80,41 @@ parser = OptionParser.new do |opts|
|
|
67
80
|
end
|
68
81
|
end
|
69
82
|
|
83
|
+
parser.parse!
|
84
|
+
require 'protobuf'
|
85
|
+
|
86
|
+
[:INT, :QUIT, :TERM].each do |sig|
|
87
|
+
trap(sig) do
|
88
|
+
server.runner.stop
|
89
|
+
end
|
90
|
+
end
|
91
|
+
|
70
92
|
begin
|
71
|
-
parser.parse!
|
72
|
-
|
73
93
|
if ARGV.empty?
|
74
|
-
|
94
|
+
puts 'You must specify an app file to use.'
|
95
|
+
puts parser.help
|
96
|
+
exit
|
75
97
|
else
|
76
98
|
server.app = ARGV.pop
|
77
99
|
raise 'Invalid app file specified (%s).' % server.app unless File.exists?(server.app)
|
78
100
|
end
|
79
|
-
|
101
|
+
|
80
102
|
# Configure the Protobuf::Logger
|
81
103
|
Protobuf::Logger.configure :file => server.log, :level => server.debug ? ::Logger::DEBUG : server.level
|
82
104
|
|
83
105
|
# Output the server opts
|
84
106
|
Protobuf::Logger.debug 'Debugging options:'
|
85
107
|
Protobuf::Logger.debug server.inspect
|
86
|
-
|
87
|
-
# Ensure errors thrown within EM are caught and logged appropriately
|
88
|
-
EventMachine.error_handler do |error|
|
89
|
-
if error.message == 'no acceptor'
|
90
|
-
raise 'Failed binding to %s:%d (%s)' % [server.host, server.port, error.message]
|
91
|
-
else
|
92
|
-
Protobuf::Logger.error error.message
|
93
|
-
Protobuf::Logger.error error.backtrace.join("\n")
|
94
|
-
end
|
95
|
-
end
|
96
108
|
|
97
109
|
# Set the name of the process
|
98
110
|
$0 = 'rpc_server %s:%d %s' % [server.host, server.port, server.app]
|
99
111
|
|
100
112
|
# Require the given application file
|
101
113
|
require server.app
|
102
|
-
|
103
|
-
# Startup and run the rpc server
|
104
|
-
EM.schedule do
|
105
|
-
EventMachine.start_server(server.host, server.port, Protobuf::Rpc::Server) && \
|
106
|
-
Protobuf::Logger.info('RPC Server listening at %s:%d in %s' % [server.host, server.port, server.env])
|
107
|
-
end
|
108
114
|
|
109
|
-
|
110
|
-
EM.reactor_running? ? EM.reactor_thread.join : EM.run
|
115
|
+
server.runner.run(server)
|
111
116
|
rescue
|
112
|
-
msg = 'ERROR: RPC Server failed to start. %s' % $!.
|
117
|
+
msg = 'ERROR: RPC Server failed to start. %s' % $!.inspect
|
113
118
|
$stderr.puts msg, *($!.backtrace)
|
114
119
|
Protobuf::Logger.error msg
|
115
120
|
Protobuf::Logger.error $!.backtrace.join("\n")
|
data/lib/protobuf.rb
CHANGED
@@ -1,9 +1,28 @@
|
|
1
|
-
require '
|
2
|
-
require '
|
1
|
+
require 'logger'
|
2
|
+
require 'socket'
|
3
|
+
require 'pp'
|
4
|
+
require 'stringio'
|
3
5
|
|
4
6
|
module Protobuf
|
5
7
|
end
|
6
8
|
|
9
|
+
# When setting up a client
|
10
|
+
unless defined?(Protobuf::ConnectorType) && Protobuf::ConnectorType == "Socket"
|
11
|
+
Protobuf::ConnectorType = "EventMachine"
|
12
|
+
require 'eventmachine'
|
13
|
+
require 'protobuf/ext/eventmachine'
|
14
|
+
require 'protobuf/rpc/connectors/eventmachine'
|
15
|
+
end
|
16
|
+
|
17
|
+
# For running the rpc_server
|
18
|
+
unless defined?(Protobuf::ServerType) && Protobuf::ServerType == "SocketServer"
|
19
|
+
Protobuf::ServerType = "EventedServer"
|
20
|
+
require 'eventmachine'
|
21
|
+
require 'protobuf/ext/eventmachine'
|
22
|
+
require 'protobuf/rpc/servers/evented_server'
|
23
|
+
end
|
24
|
+
|
7
25
|
require 'protobuf/rpc/client'
|
8
|
-
require 'protobuf/rpc/
|
26
|
+
require 'protobuf/rpc/connectors/socket'
|
9
27
|
require 'protobuf/rpc/service'
|
28
|
+
require 'protobuf/rpc/servers/socket_server'
|
@@ -1,5 +1,3 @@
|
|
1
|
-
require 'logger'
|
2
|
-
|
3
1
|
module Protobuf
|
4
2
|
class Logger < ::Logger
|
5
3
|
|
@@ -7,15 +5,11 @@ module Protobuf
|
|
7
5
|
attr_accessor :file, :level
|
8
6
|
|
9
7
|
# One-line file/level configuration
|
10
|
-
def configure
|
8
|
+
def configure(options)
|
11
9
|
self.file = options[:file] if options[:file]
|
12
10
|
self.level = options[:level] if options[:level]
|
13
11
|
end
|
14
12
|
|
15
|
-
def configured?
|
16
|
-
! instance.nil?
|
17
|
-
end
|
18
|
-
|
19
13
|
# Use to reset the instance
|
20
14
|
def reset_device!
|
21
15
|
self.file = self.level = @__instance = nil
|
@@ -58,7 +52,11 @@ module Protobuf
|
|
58
52
|
Protobuf::Logger.__send__(m, *params, &block)
|
59
53
|
end
|
60
54
|
end
|
55
|
+
|
56
|
+
def self.included(base)
|
57
|
+
base.extend(LogMethods)
|
58
|
+
end
|
61
59
|
end
|
62
60
|
|
63
61
|
end
|
64
|
-
end
|
62
|
+
end
|
@@ -110,15 +110,14 @@ module Protobuf
|
|
110
110
|
end
|
111
111
|
|
112
112
|
def create_files(filename, out_dir, file_create)
|
113
|
-
|
114
|
-
|
115
|
-
|
116
|
-
|
117
|
-
|
118
|
-
|
119
|
-
|
120
|
-
|
121
|
-
end
|
113
|
+
$: << File.expand_path(out_dir)
|
114
|
+
Class.new.class_eval(to_s) # check the message
|
115
|
+
$:.delete File.expand_path(out_dir)
|
116
|
+
rescue LoadError
|
117
|
+
puts "Error creating file #{filename}"
|
118
|
+
puts $!.message
|
119
|
+
exit 1
|
120
|
+
else
|
122
121
|
|
123
122
|
file = File.basename(filename)
|
124
123
|
message_module = Util.module_to_path(package.map{|p| p.to_s.capitalize}.join('::'))
|
@@ -107,12 +107,12 @@ module Protobuf
|
|
107
107
|
def self.label2id(label)
|
108
108
|
require 'protobuf/descriptor/descriptor_proto'
|
109
109
|
case label
|
110
|
-
when :required
|
111
|
-
Google::Protobuf::FieldDescriptorProto::Label::LABEL_REQUIRED
|
112
|
-
when :optional
|
113
|
-
Google::Protobuf::FieldDescriptorProto::Label::LABEL_OPTIONAL
|
114
|
-
when :repeated
|
115
|
-
Google::Protobuf::FieldDescriptorProto::Label::LABEL_REPEATED
|
110
|
+
when :required then
|
111
|
+
Google::Protobuf::FieldDescriptorProto::Label::LABEL_REQUIRED
|
112
|
+
when :optional then
|
113
|
+
Google::Protobuf::FieldDescriptorProto::Label::LABEL_OPTIONAL
|
114
|
+
when :repeated then
|
115
|
+
Google::Protobuf::FieldDescriptorProto::Label::LABEL_REPEATED
|
116
116
|
else
|
117
117
|
raise ArgumentError, "Invalid label: #{label}"
|
118
118
|
end
|
@@ -1,6 +1,6 @@
|
|
1
1
|
require 'fiber'
|
2
2
|
|
3
|
-
# Method
|
3
|
+
# Method from em-synchrony
|
4
4
|
# https://github.com/igrigorik/em-synchrony
|
5
5
|
#
|
6
6
|
# A convenience method for wrapping EM.run body within
|
@@ -8,9 +8,7 @@ require 'fiber'
|
|
8
8
|
# paused and resumed based on IO scheduling
|
9
9
|
module EventMachine
|
10
10
|
def self.fiber_run(blk=nil, tail=nil, &block)
|
11
|
-
blk
|
12
|
-
context = Proc.new{ Fiber.new{ blk.call }.resume }
|
13
|
-
|
11
|
+
context = Proc.new{ Fiber.new{ (b = blk || block) and b.call }.resume }
|
14
12
|
self.run(context, tail)
|
15
13
|
end
|
16
14
|
end
|
@@ -1,5 +1,3 @@
|
|
1
|
-
require 'pp'
|
2
|
-
require 'stringio'
|
3
1
|
require 'protobuf/descriptor/descriptor'
|
4
2
|
require 'protobuf/message/decoder'
|
5
3
|
require 'protobuf/message/encoder'
|
@@ -27,7 +25,7 @@ module Protobuf
|
|
27
25
|
end
|
28
26
|
end
|
29
27
|
|
30
|
-
class <<self
|
28
|
+
class << self
|
31
29
|
include Protoable
|
32
30
|
|
33
31
|
# Reserve field numbers for extensions. Don't use this method directly.
|
data/lib/protobuf/rpc/buffer.rb
CHANGED
@@ -7,21 +7,21 @@ module Protobuf
|
|
7
7
|
|
8
8
|
MODES = [:read, :write]
|
9
9
|
|
10
|
-
def initialize
|
10
|
+
def initialize(mode=:read, data='')
|
11
11
|
@data = data.is_a?(Protobuf::Message) ? data.serialize_to_string : data.to_s
|
12
12
|
@flush = false
|
13
13
|
self.mode = mode
|
14
14
|
end
|
15
15
|
|
16
|
-
def mode=
|
17
|
-
if MODES.include?
|
16
|
+
def mode=(mode)
|
17
|
+
if MODES.include?(mode)
|
18
18
|
@mode = mode
|
19
19
|
else
|
20
20
|
@mode = :read
|
21
21
|
end
|
22
22
|
end
|
23
23
|
|
24
|
-
def write
|
24
|
+
def write(force_mode=true)
|
25
25
|
if force_mode and reading?
|
26
26
|
mode = :write
|
27
27
|
elsif not force_mode and reading?
|
@@ -32,7 +32,7 @@ module Protobuf
|
|
32
32
|
'%d-%s' % [@size, @data]
|
33
33
|
end
|
34
34
|
|
35
|
-
def <<
|
35
|
+
def <<(data)
|
36
36
|
@data << data
|
37
37
|
if reading?
|
38
38
|
get_data_size
|
@@ -71,4 +71,4 @@ module Protobuf
|
|
71
71
|
|
72
72
|
end
|
73
73
|
end
|
74
|
-
end
|
74
|
+
end
|
data/lib/protobuf/rpc/client.rb
CHANGED
@@ -9,7 +9,7 @@ module Protobuf
|
|
9
9
|
extend Forwardable
|
10
10
|
include Protobuf::Logger::LogMethods
|
11
11
|
|
12
|
-
delegate [:options, :success_cb, :failure_cb, :async?] => :@connector
|
12
|
+
delegate [:options, :complete_cb, :success_cb, :failure_cb, :async?] => :@connector
|
13
13
|
attr_reader :connector
|
14
14
|
|
15
15
|
# Create a new client with default options (defined in ClientConnection)
|
@@ -25,22 +25,32 @@ module Protobuf
|
|
25
25
|
# :request => request
|
26
26
|
# })
|
27
27
|
#
|
28
|
-
def initialize
|
29
|
-
raise "Invalid client configuration. Service must be defined." if
|
30
|
-
@connector = Connector.
|
31
|
-
log_debug
|
28
|
+
def initialize(opts={})
|
29
|
+
raise "Invalid client configuration. Service must be defined." if opts[:service].nil?
|
30
|
+
@connector = Connector.connector_for_client.new(opts)
|
31
|
+
log_debug "[#{log_signature}] Initialized with options: %s" % opts.inspect
|
32
|
+
end
|
33
|
+
|
34
|
+
def log_signature
|
35
|
+
@log_signature ||= "client-#{self.class}"
|
32
36
|
end
|
33
37
|
|
34
|
-
# Set a
|
35
|
-
# successful response from the service when it is returned.
|
36
|
-
# If this callback is called, failure_cb will NOT be called.
|
38
|
+
# Set a complete callback on the client to return the object (self).
|
37
39
|
# Callback is called regardless of :async setting.
|
38
40
|
#
|
39
41
|
# client = Client.new(:service => WidgetService)
|
40
|
-
# client.
|
42
|
+
# client.on_complete {|obj| ... }
|
41
43
|
#
|
42
|
-
def
|
43
|
-
@connector.
|
44
|
+
def on_complete(&complete_cb)
|
45
|
+
@connector.complete_cb = complete_cb
|
46
|
+
end
|
47
|
+
|
48
|
+
def on_complete=(callable)
|
49
|
+
if callable != nil && !callable.respond_to?(:call) && callable.arity != 1
|
50
|
+
raise "callable must take a single argument and respond to :call"
|
51
|
+
end
|
52
|
+
|
53
|
+
@connector.complete_cb = callable
|
44
54
|
end
|
45
55
|
|
46
56
|
# Set a failure callback on the client to return the
|
@@ -51,9 +61,37 @@ module Protobuf
|
|
51
61
|
# client = Client.new(:service => WidgetService)
|
52
62
|
# client.on_failure {|err| ... }
|
53
63
|
#
|
54
|
-
def on_failure
|
64
|
+
def on_failure(&failure_cb)
|
55
65
|
@connector.failure_cb = failure_cb
|
56
66
|
end
|
67
|
+
|
68
|
+
def on_failure=(callable)
|
69
|
+
if callable != nil && !callable.respond_to?(:call) && callable.arity != 1
|
70
|
+
raise "callable must take a single argument and respond to :call"
|
71
|
+
end
|
72
|
+
|
73
|
+
@connector.failure_cb = callable
|
74
|
+
end
|
75
|
+
|
76
|
+
# Set a success callback on the client to return the
|
77
|
+
# successful response from the service when it is returned.
|
78
|
+
# If this callback is called, failure_cb will NOT be called.
|
79
|
+
# Callback is called regardless of :async setting.
|
80
|
+
#
|
81
|
+
# client = Client.new(:service => WidgetService)
|
82
|
+
# client.on_success {|res| ... }
|
83
|
+
#
|
84
|
+
def on_success(&success_cb)
|
85
|
+
@connector.success_cb = success_cb
|
86
|
+
end
|
87
|
+
|
88
|
+
def on_success=(callable)
|
89
|
+
if callable != nil && !callable.respond_to?(:call) && callable.arity != 1
|
90
|
+
raise "callable must take a single argument and respond to :call"
|
91
|
+
end
|
92
|
+
|
93
|
+
@connector.success_cb = callable
|
94
|
+
end
|
57
95
|
|
58
96
|
# Provides a mechanism to call the service method against the client
|
59
97
|
# which will automatically setup the service_class and method_name
|
@@ -67,28 +105,28 @@ module Protobuf
|
|
67
105
|
# c.on_failure {|err| ... }
|
68
106
|
# end
|
69
107
|
#
|
70
|
-
def method_missing
|
108
|
+
def method_missing(method, *params)
|
71
109
|
service = options[:service]
|
72
110
|
unless service.rpcs[service].keys.include?(method)
|
73
|
-
log_error
|
74
|
-
super
|
111
|
+
log_error "[#{log_signature}] %s#%s not rpc method, passing to super" % [service.name, method.to_s]
|
112
|
+
super(method, *params)
|
75
113
|
else
|
76
|
-
log_debug
|
114
|
+
log_debug "[#{log_signature}] %s#%s" % [service.name, method.to_s]
|
77
115
|
rpc = service.rpcs[service][method.to_sym]
|
78
116
|
options[:request_type] = rpc.request_type
|
79
|
-
log_debug
|
117
|
+
log_debug "[#{log_signature}] Request Type: %s" % options[:request_type].name
|
80
118
|
options[:response_type] = rpc.response_type
|
81
|
-
log_debug
|
119
|
+
log_debug "[#{log_signature}] Response Type: %s" % options[:response_type].name
|
82
120
|
options[:method] = method.to_s
|
83
121
|
options[:request] = params[0].is_a?(Hash) ? options[:request_type].new(params[0]) : params[0]
|
84
|
-
log_debug
|
122
|
+
log_debug "[#{log_signature}] Request Data: %s" % options[:request].inspect
|
85
123
|
|
86
124
|
# Call client to setup on_success and on_failure event callbacks
|
87
125
|
if block_given?
|
88
|
-
log_debug
|
126
|
+
log_debug "[#{log_signature}] client setup callback given, invoking"
|
89
127
|
yield(self)
|
90
128
|
else
|
91
|
-
log_debug
|
129
|
+
log_debug "[#{log_signature}] no block given for callbacks"
|
92
130
|
end
|
93
131
|
|
94
132
|
send_request
|