protobuf-rpc-register 0.3.0 → 0.4.0

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 46b31ddac5ac6792779b1751d604cc352991ec3a
4
- data.tar.gz: 677da2624d9f0b1546661403ddecea2fdb627785
3
+ metadata.gz: 69cf91d5d0dc37cfa2e3183ee45aa1d17d739035
4
+ data.tar.gz: 946260c19e3f8f9bd888ca8e4a0dfad81f8ffb55
5
5
  SHA512:
6
- metadata.gz: 8d20ce6d1ee41109c8282d36b5d09d651bd4a0273324e83f3929c37a926ebec618681597884c605221fb0a73e47a5dc6e4fdf161c3076e90f218c3ea598c2869
7
- data.tar.gz: 8ce2b7712106e944531de36c744cce162b79c7c07d41d32584dd3465f49b8900d62fe3dd5675b3d76470123f0f382942aa4be539d678c3d66db3eaef337c3be0
6
+ metadata.gz: f3e97a28e601554cf33c86f60c10007ac8735c14d51579f103ecf7967e14cb9af602d8313a3c14df26d4b6131b14b3c93324f449575d99db1f2c24fdefe5d91b
7
+ data.tar.gz: 237190b219ca4d3a58d48286cb30e7ac8c5895e30e9de31e60ae755fd3b6b5067b5e38778ee03752a1dadebc112f0a61491bd03057f5d88a0132b3267e20577f
@@ -2,14 +2,15 @@ module Protobuf
2
2
  module Rpc
3
3
  module Clients
4
4
  class Base
5
- attr_accessor :logger
5
+ attr_accessor :logger, :error_logger
6
6
 
7
7
  mattr_reader(:mutex) { Mutex.new }
8
8
 
9
- def initialize(options = {})
9
+ def initialize(options = {}, stdout: STDOUT, stderr: STDERR)
10
10
  @options = options
11
11
  @namespace = options[:namespace]
12
- @logger ||= Logger.new(STDOUT)
12
+ @logger ||= Logger.new(stdout)
13
+ @error_logger ||= Logger.new(stderr)
13
14
  end
14
15
 
15
16
  def send_rpc_request(method, msg)
@@ -24,11 +25,7 @@ module Protobuf
24
25
  end
25
26
 
26
27
  c.on_failure do |error|
27
- exception_name = Protobuf::Socketrpc::ErrorReason.name_for_tag(error.code).to_s.downcase
28
- exception_class = Protobuf::Rpc.const_get(exception_name.camelize)
29
- exception = exception_class.new(error.message)
30
- logger.error exception
31
- raise exception
28
+ res = error
32
29
  end
33
30
  end
34
31
 
@@ -36,58 +33,70 @@ module Protobuf
36
33
  end
37
34
 
38
35
  def check_response_error(res, raise_error: true)
39
- if res.is_a?(Messages::Error)
40
- error_class = self.class.mutex.synchronize do
41
- module_name = (@namespace || 'Protobuf').camelize
42
- m = Object.const_defined?(module_name, false) ? Object.const_get(module_name, false) : Object.const_set(module_name, Module.new)
43
- m.const_defined?(:Rpc, false) ? m.const_get(:Rpc, false) : m.const_set(:Rpc, Module.new)
44
-
45
- if m.const_defined?(res.error_class, false)
46
- m.const_get(res.error_class, false)
47
- else
48
- module_name = res.error_class.deconstantize
49
- class_name = res.error_class.demodulize
50
- base_module = m::Rpc
51
- module_name.split('::').each do |m|
52
- base_module.const_defined?(m, false) || base_module.const_set(m, Module.new)
53
- base_module = base_module.const_get(m, false)
36
+ case res
37
+ when Protobuf::Rpc::Messages::Error
38
+ error_class = self.class.mutex.synchronize { define_error_class(res) }
39
+ error = error_class.new(res.error_message)
40
+ error.set_backtrace(res.error_backtrace)
41
+ raise_error(error, raise_error)
42
+ when Protobuf::Error
43
+ error_reason = Protobuf::Socketrpc::ErrorReason.name_for_tag(res.code).to_s.downcase
44
+ error_class = Protobuf::Rpc.const_get(error_reason.camelize)
45
+ error = error_class.new(res.message)
46
+ raise_error(error, raise_error)
47
+ else
48
+ res
49
+ end
50
+ end
51
+
52
+ private
53
+
54
+ def define_error_class(res)
55
+ module_name = (@namespace || 'Protobuf').camelize
56
+ m = Object.const_defined?(module_name, false) ? Object.const_get(module_name, false) : Object.const_set(module_name, Module.new)
57
+ m.const_defined?(:Rpc, false) ? m.const_get(:Rpc, false) : m.const_set(:Rpc, Module.new)
58
+
59
+ if m.const_defined?(res.error_class, false)
60
+ m.const_get(res.error_class, false)
61
+ else
62
+ module_name = res.error_class.deconstantize
63
+ class_name = res.error_class.demodulize
64
+ base_module = m::Rpc
65
+ module_name.split('::').each do |m|
66
+ base_module.const_defined?(m, false) || base_module.const_set(m, Module.new)
67
+ base_module = base_module.const_get(m, false)
68
+ end
69
+ error_superclass = res.error_class.safe_constantize || begin
70
+ require res.error_class.split('::')[0].underscore
71
+ res.error_class.constantize
72
+ rescue LoadError
73
+ raise NameError.new("uninitialized constant #{res.error_class}", res.error_class)
74
+ end
75
+ if base_module.const_defined?(class_name, false)
76
+ base_module.const_get(class_name, false)
77
+ else
78
+ base_module.const_set(class_name, Class.new(error_superclass) do
79
+ def initialize(message = nil)
80
+ @message = message
54
81
  end
55
- error_superclass = res.error_class.safe_constantize || begin
56
- require res.error_class.split('::')[0].underscore
57
- res.error_class.constantize
58
- rescue LoadError
59
- raise NameError.new("uninitialized constant #{res.error_class}", res.error_class)
82
+
83
+ def inspect
84
+ "#{self.class}: #{@message}"
60
85
  end
61
- if base_module.const_defined?(class_name, false)
62
- base_module.const_get(class_name, false)
63
- else
64
- base_module.const_set(class_name, Class.new(error_superclass) do
65
- def initialize(message = nil)
66
- @message = message
67
- end
68
-
69
- def inspect
70
- "#{self.class}: #{@message}"
71
- end
72
-
73
- def message
74
- @message
75
- end
76
- end)
86
+
87
+ def message
88
+ @message
77
89
  end
78
- end
90
+ end)
79
91
  end
80
-
81
- error = error_class.new(res.error_message)
82
- error.set_backtrace(res.error_backtrace)
83
- logger.error error
84
- raise error if raise_error
85
- error
86
- else
87
- res
88
92
  end
89
93
  end
90
94
 
95
+ def raise_error(error, raise_error = false)
96
+ raise_error ? raise(error) : error_logger.error(error)
97
+ error
98
+ end
99
+
91
100
  def self.implement_rpc(rpc_method)
92
101
  define_method(rpc_method) do |*args|
93
102
  msg = if args.first.is_a?(Protobuf::Message)
@@ -1,7 +1,7 @@
1
1
  module Protobuf
2
2
  module Rpc
3
3
  module Register
4
- VERSION = "0.3.0".freeze
4
+ VERSION = "0.4.0".freeze
5
5
  end
6
6
  end
7
7
  end
@@ -1,7 +1,7 @@
1
1
  module Protobuf
2
2
  module Rpc
3
3
  class Serializer
4
- def self.dump(msg, serializer = nil)
4
+ def self.dump(msg, serializer:)
5
5
  return msg if msg.is_a?(Messages::RpcCompressedMessage)
6
6
  dumped_message = Messages::RpcCompressedMessage.new(compressed: false)
7
7
 
@@ -28,18 +28,8 @@ module Protobuf
28
28
  yaml(dumped_message, msg)
29
29
  when :MARSHAL
30
30
  marshal(dumped_message, msg)
31
- when :RAW
32
- raw(dumped_message, msg)
33
31
  else
34
- if defined?(MessagePack) && msg.respond_to?(:to_msgpack)
35
- msgpack(dumped_message, msg)
36
- elsif defined?(Oj)
37
- oj(dumped_message, msg)
38
- elsif defined?(MultiJson)
39
- multi_json(dumped_message, msg)
40
- else
41
- yaml(dumped_message, msg)
42
- end
32
+ raw(dumped_message, msg)
43
33
  end
44
34
  end
45
35
 
@@ -6,11 +6,11 @@ module Protobuf
6
6
  module Services
7
7
  class Base < ::Protobuf::Rpc::Service
8
8
 
9
- def compress_with(msg)
9
+ def compress_with(msg, serializer: :MSGPACK)
10
10
  if msg.is_a?(StandardError)
11
11
  msg = Messages::Error.new(error_class: msg.class.name, error_message: msg.message, error_backtrace: msg.backtrace)
12
12
  end
13
- respond_with Serializer.dump(msg)
13
+ respond_with Serializer.dump(msg, serializer: serializer)
14
14
  end
15
15
 
16
16
  def self.inherited(subclass)
@@ -39,5 +39,4 @@ Gem::Specification.new do |spec|
39
39
 
40
40
  spec.add_runtime_dependency 'protobuf', '~> 3.5'
41
41
  spec.add_runtime_dependency 'active_interaction', '~> 3.0'
42
- spec.add_runtime_dependency 'activesupport', '~> 4.0'
43
42
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: protobuf-rpc-register
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.0
4
+ version: 0.4.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - scorix
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2016-05-20 00:00:00.000000000 Z
11
+ date: 2016-05-22 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -164,20 +164,6 @@ dependencies:
164
164
  - - "~>"
165
165
  - !ruby/object:Gem::Version
166
166
  version: '3.0'
167
- - !ruby/object:Gem::Dependency
168
- name: activesupport
169
- requirement: !ruby/object:Gem::Requirement
170
- requirements:
171
- - - "~>"
172
- - !ruby/object:Gem::Version
173
- version: '4.0'
174
- type: :runtime
175
- prerelease: false
176
- version_requirements: !ruby/object:Gem::Requirement
177
- requirements:
178
- - - "~>"
179
- - !ruby/object:Gem::Version
180
- version: '4.0'
181
167
  description: Register for rpc services using protobuf rpc.
182
168
  email:
183
169
  - scorix@gmail.com