jrpc 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: 121af4aaa6f193b8f5a4fb4a0a9251cf1483e425
4
- data.tar.gz: 4e2a49c53d7100843ecefabbcffc15e35292e881
3
+ metadata.gz: fb7d08dcd06b5a129f1ff83e15fe093da354c038
4
+ data.tar.gz: 461277ae63ac277d120d612129a34c64ae70d4d5
5
5
  SHA512:
6
- metadata.gz: ad04bf864632f4ab4856f237dc98b4df3c8773291527cfebadee4b2ebc842aeacbd342ff8ec5e156606198896f91df5dfed9d2500f29c6eb8d803e5dd42dadc6
7
- data.tar.gz: f652f6d410f9eb68baf0fb2937880306443b6f475713c066ca7875d892fef86b8fc57f957a87adce51b3181abdcdf377e33720a8f501db553598ff0ed38114af
6
+ metadata.gz: b17f649d6868a52226f0b0854777e68cf87114a99814860ef881970295646a18c97a19e9514fe93a568446c217a145c16e9674b277956cb3571d7a547c5d0976
7
+ data.tar.gz: dd952ce1a936fd5b8b9caf02fe04f7b1d2cdda891b8f8dcd9380c4242819a24663a29954b6947dec94999ccb2ef10794e96d169cb4b486e46d158dc280bcf7a2
data/lib/jrpc.rb CHANGED
@@ -1,6 +1,7 @@
1
1
  require 'jrpc/version'
2
2
  require 'jrpc/base_client'
3
3
  require 'jrpc/tcp_client'
4
+ require 'jrpc/safe_tcp_client'
4
5
  require 'jrpc/error/error'
5
6
  require 'jrpc/error/client_error'
6
7
  require 'jrpc/error/server_error'
@@ -0,0 +1,25 @@
1
+ require 'net/tcp_client'
2
+ require 'netstring'
3
+ module JRPC
4
+ class SafeTcpClient < TcpClient
5
+
6
+ def initialize(uri, options = {})
7
+ super uri, options.merge(connect_on_initialize: false)
8
+ end
9
+
10
+ private
11
+
12
+ def send_command(request)
13
+ super
14
+ ensure
15
+ close
16
+ end
17
+
18
+ def send_notification(request)
19
+ super
20
+ ensure
21
+ close
22
+ end
23
+
24
+ end
25
+ end
@@ -3,29 +3,49 @@ require 'netstring'
3
3
  module JRPC
4
4
  class TcpClient < BaseClient
5
5
  attr_reader :namespace
6
- def_delegators :@socket, :logger, :logger=, :close, :alive?
6
+ def_delegators :@socket, :logger, :logger=
7
7
 
8
8
  def initialize(uri, options = {})
9
9
  super
10
10
  @namespace = options.delete(:namespace).to_s
11
- t = @options.fetch(:timeout, 5)
11
+ connect if options.fetch(:connect_on_initialize, true)
12
+ end
12
13
 
13
- @socket = Net::TCPClient.new server: @uri,
14
- connect_retry_count: t,
15
- connect_timeout: t,
16
- read_timeout: t,
17
- # write_timeout: t,
18
- buffered: false # recommended for RPC
14
+ def connect
15
+ close if alive?
16
+ @socket = Net::TCPClient.new(connection_params)
17
+ end
18
+
19
+ def close
20
+ unless @socket.nil?
21
+ @socket.close
22
+ @socket = nil
23
+ end
24
+ end
25
+
26
+ def alive?
27
+ if @socket.nil?
28
+ false
29
+ else
30
+ @socket.alive?
31
+ end
19
32
  end
20
33
 
21
34
  private
22
35
 
36
+ def connection_params
37
+ t = options.fetch(:timeout, 5)
38
+ {server: uri, connect_retry_count: t, connect_timeout: t, read_timeout: t, buffered: false}
39
+ end
40
+
23
41
  def send_command(request)
42
+ connect unless alive?
24
43
  send_request(request)
25
44
  receive_response
26
45
  end
27
46
 
28
47
  def send_notification(request)
48
+ connect unless alive?
29
49
  send_request(request)
30
50
  end
31
51
 
@@ -34,7 +54,7 @@ module JRPC
34
54
  end
35
55
 
36
56
  def send_request(request)
37
- @socket.send Netstring.dump(request.to_s), 0
57
+ @socket.write Netstring.dump(request.to_s)
38
58
  end
39
59
 
40
60
  def receive_response
@@ -56,4 +76,4 @@ module JRPC
56
76
  end
57
77
 
58
78
  end
59
- end
79
+ end
data/lib/jrpc/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module JRPC
2
- VERSION = '0.3.0'
2
+ VERSION = '0.4.0'
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: jrpc
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
  - Denis Talakevich
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-11-21 00:00:00.000000000 Z
11
+ date: 2015-11-25 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: netstring
@@ -107,6 +107,7 @@ files:
107
107
  - lib/jrpc/error/parse_error.rb
108
108
  - lib/jrpc/error/server_error.rb
109
109
  - lib/jrpc/error/unknown_error.rb
110
+ - lib/jrpc/safe_tcp_client.rb
110
111
  - lib/jrpc/tcp_client.rb
111
112
  - lib/jrpc/version.rb
112
113
  homepage: https://github.com/senid231/jrpc