jrpc 0.4.3 → 0.4.4

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: 9f52da03b123ed6f6db054664d281c87085172a8
4
- data.tar.gz: 8d1220f230a1f1f9aba9cd449510675ebe25095e
3
+ metadata.gz: 9700f88f401f9dc3008b7eb259e1033f2d33720e
4
+ data.tar.gz: 2fce76c9f94d75a47ae4b762df834ca66e54e2df
5
5
  SHA512:
6
- metadata.gz: 74f7ac05daa9badd03543cdfa88e0021fc17c2768f74f487cd615be8145fcd430228fe2e77231a85384ef7173ad7cf875328f4ddfb38223869cb69cd7600b2da
7
- data.tar.gz: 71c5d11bfbe0909f19f7b85d00771ccbc17f55d3376106bd80976bf0f8e0cf009fc23b2c6c29cf70c987c10721c08ec69fd4da9f4fb37007f59592b94bdc0939
6
+ metadata.gz: 5807025e3121cdf27a558da1f08d27cd9eb3c28c818a9a2c61b79256f0bffd964c61396c623200dafa7a9e462d7d3228511d5ae589c3d399e843ce884aec4489
7
+ data.tar.gz: 09401f47a4c06eb8e932ce4b16f1cb17dbbca466c7d5bea246dbc3a614e5f654b8ef6c0b81531da0f9e345370b5f7796133c1c7542fb99b4798900927fe5f7aa
data/jrpc.gemspec CHANGED
@@ -17,10 +17,11 @@ Gem::Specification.new do |spec|
17
17
  spec.files = `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
18
18
  spec.require_paths = ['lib']
19
19
 
20
- spec.add_dependency 'netstring'
21
- spec.add_dependency 'net_tcp_client', '>= 1.0.2'
20
+ spec.add_dependency 'netstring', '~> 0'
21
+ spec.add_dependency 'net_tcp_client', '~> 1.0', '>= 1.0.2'
22
+ spec.add_dependency 'oj', '~> 2.0'
22
23
 
23
24
  spec.add_development_dependency 'bundler', '~> 1.10'
24
25
  spec.add_development_dependency 'rake', '~> 10.0'
25
- spec.add_development_dependency 'rspec'
26
+ spec.add_development_dependency 'rspec', '~> 3.0'
26
27
  end
@@ -1,4 +1,4 @@
1
- require 'json'
1
+ require 'oj'
2
2
  require 'forwardable'
3
3
  module JRPC
4
4
  class BaseClient
@@ -22,8 +22,8 @@ module JRPC
22
22
  id = generate_id
23
23
  request['id'] = id
24
24
 
25
- response = send_command JSON.generate(request)
26
- response = JSON.parse response
25
+ response = send_command Oj.dump(request)
26
+ response = Oj.load(response)
27
27
 
28
28
  validate_response(response, id)
29
29
  parse_error(response['error']) if response.has_key?('error')
@@ -1,32 +1,47 @@
1
1
  require 'net/tcp_client'
2
2
  require 'netstring'
3
+ require 'logger'
4
+ require 'benchmark'
3
5
  module JRPC
4
6
  class TcpClient < BaseClient
5
- attr_reader :namespace
6
- def_delegators :@client, :logger, :logger=, :close, :closed?
7
+ attr_reader :namespace, :transport
8
+ attr_accessor :logger
9
+ def_delegators :@transport, :close, :closed?, :connect
10
+
11
+ MAX_LOGGED_MESSAGE_LENGTH = 255
7
12
 
8
13
  def initialize(uri, options = {})
9
14
  super
15
+ @logger = @options.delete(:logger) || Logger.new($null)
10
16
  @namespace = @options.delete(:namespace).to_s
11
17
  t = @options.fetch(:timeout, 5)
12
18
 
13
- @client = Net::TCPClient.new server: @uri,
19
+ @transport = Net::TCPClient.new server: @uri,
14
20
  connect_retry_count: t,
15
21
  connect_timeout: t,
16
22
  read_timeout: t, # write_timeout: t,
17
- buffered: false, # recommended for RPC
18
- logger: @options.delete(:logger)
23
+ buffered: false # recommended for RPC
19
24
  end
20
25
 
21
26
  private
22
27
 
23
28
  def send_command(request)
24
- send_request(request)
25
- receive_response
29
+ response = nil
30
+ t = Benchmark.realtime do
31
+ logger.debug "Request address: #{uri}"
32
+ logger.debug "Request message: #{Utils.truncate(request, MAX_LOGGED_MESSAGE_LENGTH)}"
33
+ send_request(request)
34
+ response = receive_response
35
+ end
36
+ logger.debug "(#{'%.2f' % (t * 1000)}ms) Response message: #{Utils.truncate(response, MAX_LOGGED_MESSAGE_LENGTH)}"
37
+ response
26
38
  end
27
39
 
28
40
  def send_notification(request)
41
+ logger.debug "Request address: #{uri}"
42
+ logger.debug "Request message: #{Utils.truncate(request, MAX_LOGGED_MESSAGE_LENGTH)}"
29
43
  send_request(request)
44
+ logger.debug 'No response required'
30
45
  end
31
46
 
32
47
  def create_message(method, params)
@@ -34,12 +49,12 @@ module JRPC
34
49
  end
35
50
 
36
51
  def send_request(request)
37
- @client.write Netstring.dump(request.to_s)
52
+ @transport.write Netstring.dump(request.to_s)
38
53
  end
39
54
 
40
55
  def receive_response
41
56
  length = get_msg_length
42
- response = @client.read(length+1)
57
+ response = @transport.read(length+1)
43
58
  raise ClientError.new('invalid response. missed comma as terminator') if response[-1] != ','
44
59
  response.chomp(',')
45
60
  end
@@ -47,7 +62,7 @@ module JRPC
47
62
  def get_msg_length
48
63
  length = ''
49
64
  while true do
50
- character = @client.read(1)
65
+ character = @transport.read(1)
51
66
  break if character == ':'
52
67
  length += character
53
68
  end
data/lib/jrpc/utils.rb ADDED
@@ -0,0 +1,9 @@
1
+ module JRPC
2
+ class Utils
3
+
4
+ def self.truncate(string, length, ommiter = '...')
5
+ "#{string[0..length]}#{ommiter if string.length > length}"
6
+ end
7
+
8
+ end
9
+ end
data/lib/jrpc/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module JRPC
2
- VERSION = '0.4.3'
2
+ VERSION = '0.4.4'
3
3
  end
data/lib/jrpc.rb CHANGED
@@ -1,4 +1,5 @@
1
1
  require 'jrpc/version'
2
+ require 'jrpc/utils'
2
3
  require 'jrpc/base_client'
3
4
  require 'jrpc/tcp_client'
4
5
  require 'jrpc/error/error'
metadata CHANGED
@@ -1,33 +1,36 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: jrpc
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.3
4
+ version: 0.4.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Denis Talakevich
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-12-02 00:00:00.000000000 Z
11
+ date: 2015-12-13 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: netstring
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - ">="
17
+ - - "~>"
18
18
  - !ruby/object:Gem::Version
19
19
  version: '0'
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
- - - ">="
24
+ - - "~>"
25
25
  - !ruby/object:Gem::Version
26
26
  version: '0'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: net_tcp_client
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: '1.0'
31
34
  - - ">="
32
35
  - !ruby/object:Gem::Version
33
36
  version: 1.0.2
@@ -35,9 +38,26 @@ dependencies:
35
38
  prerelease: false
36
39
  version_requirements: !ruby/object:Gem::Requirement
37
40
  requirements:
41
+ - - "~>"
42
+ - !ruby/object:Gem::Version
43
+ version: '1.0'
38
44
  - - ">="
39
45
  - !ruby/object:Gem::Version
40
46
  version: 1.0.2
47
+ - !ruby/object:Gem::Dependency
48
+ name: oj
49
+ requirement: !ruby/object:Gem::Requirement
50
+ requirements:
51
+ - - "~>"
52
+ - !ruby/object:Gem::Version
53
+ version: '2.0'
54
+ type: :runtime
55
+ prerelease: false
56
+ version_requirements: !ruby/object:Gem::Requirement
57
+ requirements:
58
+ - - "~>"
59
+ - !ruby/object:Gem::Version
60
+ version: '2.0'
41
61
  - !ruby/object:Gem::Dependency
42
62
  name: bundler
43
63
  requirement: !ruby/object:Gem::Requirement
@@ -70,16 +90,16 @@ dependencies:
70
90
  name: rspec
71
91
  requirement: !ruby/object:Gem::Requirement
72
92
  requirements:
73
- - - ">="
93
+ - - "~>"
74
94
  - !ruby/object:Gem::Version
75
- version: '0'
95
+ version: '3.0'
76
96
  type: :development
77
97
  prerelease: false
78
98
  version_requirements: !ruby/object:Gem::Requirement
79
99
  requirements:
80
- - - ">="
100
+ - - "~>"
81
101
  - !ruby/object:Gem::Version
82
- version: '0'
102
+ version: '3.0'
83
103
  description: JSON RPC client over TCP
84
104
  email:
85
105
  - senid231@gmail.com
@@ -108,6 +128,7 @@ files:
108
128
  - lib/jrpc/error/server_error.rb
109
129
  - lib/jrpc/error/unknown_error.rb
110
130
  - lib/jrpc/tcp_client.rb
131
+ - lib/jrpc/utils.rb
111
132
  - lib/jrpc/version.rb
112
133
  homepage: https://github.com/senid231/jrpc
113
134
  licenses: