jrpc 0.3.0 → 0.4.0

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: 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