protobuf-rpc-register 0.4.1 → 0.4.2

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 70c633bbbfe53a84ac4c05ce177c5a65a7dc9ffa
4
- data.tar.gz: 1469f09c7cdcdfa3d9c889de677bc3fc56289ef6
3
+ metadata.gz: db71b6ff98bdd94c7a855de0374b81b0d7fd8a58
4
+ data.tar.gz: 9a60f0893f84f3f9bc748e99d1db6c8e7aad4b97
5
5
  SHA512:
6
- metadata.gz: 1d318ea876594e2fb6182cce82573acdf7a60458f77de202635bf3247ec5c9e4b93c07b2a145dafd7ecba76f9937645b28f5466f635375665a5b8199a5e3bbfe
7
- data.tar.gz: a7cd3b378daf65dc5a24dc738afd9758c5ceebdf732839ea3fbb182a11c53b2e6942f0f22a214cedf0881a86081b1d4ff62ab69a490779011add73ee0053920e
6
+ metadata.gz: b05063712e2f79ac0af00e3d270b9d691d44e7c1987575cbf19a06aa6a42f1dea863ca82c0282b2193306d689eda819f0e14eb31dc0e196a4c4b23228a13b8d8
7
+ data.tar.gz: c17fe1a97f2ac8662a27ffaa546998e8f77af06d66f186935453bd92bee878cccbbf6aae7232b218896837ab8c5ffe4257e6c64da1ff227f9ba08d4497384f19
@@ -3,22 +3,23 @@ module Protobuf
3
3
  module Clients
4
4
  class Base
5
5
  attr_accessor :logger, :error_logger
6
+ attr_accessor :host, :port, :timeout
6
7
 
7
8
  mattr_reader(:mutex) { Mutex.new }
8
9
 
9
10
  def initialize(host: nil, port: nil, timeout: 1, stdout: STDOUT, stderr: STDERR, namespace: nil)
11
+ @host = host
12
+ @port = port
13
+ @timeout = timeout
10
14
  @namespace = namespace
11
15
  @logger ||= Logger.new(stdout)
12
16
  @error_logger ||= Logger.new(stderr)
13
17
  end
14
18
 
15
- def send_rpc_request(method, msg)
19
+ def send_rpc_request(method, msg, serializer: serializer)
16
20
  res = nil
17
21
 
18
- names = self.class.name.split('::')
19
- svc_class = [names[0..-3], 'Services', names[-1]].flatten.join('::')
20
-
21
- Object.const_get(svc_class).client(host: host, port: port, timeout: timeout).send(method, Serializer.dump(msg)) do |c|
22
+ internal_client.send(method, Serializer.dump(msg, serializer: serializer)) do |c|
22
23
  c.on_success do |rpc_compressed_message|
23
24
  res = Protobuf::Rpc::Serializer.load(rpc_compressed_message)
24
25
  end
@@ -50,6 +51,14 @@ module Protobuf
50
51
 
51
52
  private
52
53
 
54
+ def internal_client
55
+ @internal_client ||= begin
56
+ names = self.class.name.split('::')
57
+ svc_class = [names[0..-3], 'Services', names[-1]].flatten.join('::')
58
+ Object.const_get(svc_class).client(host: host, port: port, timeout: timeout)
59
+ end
60
+ end
61
+
53
62
  def define_error_class(res)
54
63
  module_name = (@namespace || 'Protobuf').camelize
55
64
  m = Object.const_defined?(module_name, false) ? Object.const_get(module_name, false) : Object.const_set(module_name, Module.new)
@@ -100,13 +109,17 @@ module Protobuf
100
109
  define_method(rpc_method) do |*args|
101
110
  msg = if args.first.is_a?(Protobuf::Message)
102
111
  args.shift
112
+ elsif args.first.respond_to?(:to_hash)
113
+ Messages::RpcCompressedMessage.new(response_body: ActiveSupport::Gzip.compress(args.first.to_hash.to_json),
114
+ serializer: :JSON,
115
+ compressed: true)
103
116
  else
104
117
  names = self.class.name.split('::')
105
118
  msg_class = Object.const_get([names[0..-3], 'Messages', names[-1]].flatten.join('::'))
106
119
  msg_class.new(*args)
107
120
  end
108
121
 
109
- send_rpc_request(rpc_method, msg)
122
+ send_rpc_request(rpc_method, msg, serializer: :JSON)
110
123
  end
111
124
  end
112
125
  end
@@ -1,7 +1,7 @@
1
1
  module Protobuf
2
2
  module Rpc
3
3
  module Register
4
- VERSION = "0.4.1".freeze
4
+ VERSION = "0.4.2".freeze
5
5
  end
6
6
  end
7
7
  end
@@ -80,6 +80,7 @@ module Protobuf
80
80
  end
81
81
 
82
82
  def msgpack(dumped_message, msg)
83
+ require 'msgpack' unless msg.respond_to?(:to_msgpack)
83
84
  dumped_message.response_body = msg.to_msgpack
84
85
  dumped_message.serializer = :MSGPACK
85
86
  end
@@ -91,11 +92,13 @@ module Protobuf
91
92
  end
92
93
 
93
94
  def oj(dumped_message, msg)
95
+ require 'oj' unless defined?(:Oj)
94
96
  dumped_message.response_body = Oj.dump(msg)
95
97
  dumped_message.serializer = :JSON
96
98
  end
97
99
 
98
100
  def multi_json(dumped_message, msg)
101
+ require 'multi_json' unless defined?(:MultiJson)
99
102
  dumped_message.response_body = MultiJson.dump(msg)
100
103
  dumped_message.serializer = :JSON
101
104
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: protobuf-rpc-register
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.1
4
+ version: 0.4.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - scorix