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 +4 -4
- data/lib/jrpc.rb +1 -0
- data/lib/jrpc/safe_tcp_client.rb +25 -0
- data/lib/jrpc/tcp_client.rb +30 -10
- data/lib/jrpc/version.rb +1 -1
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: fb7d08dcd06b5a129f1ff83e15fe093da354c038
|
4
|
+
data.tar.gz: 461277ae63ac277d120d612129a34c64ae70d4d5
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: b17f649d6868a52226f0b0854777e68cf87114a99814860ef881970295646a18c97a19e9514fe93a568446c217a145c16e9674b277956cb3571d7a547c5d0976
|
7
|
+
data.tar.gz: dd952ce1a936fd5b8b9caf02fe04f7b1d2cdda891b8f8dcd9380c4242819a24663a29954b6947dec94999ccb2ef10794e96d169cb4b486e46d158dc280bcf7a2
|
data/lib/jrpc.rb
CHANGED
@@ -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
|
data/lib/jrpc/tcp_client.rb
CHANGED
@@ -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
|
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
|
-
|
11
|
+
connect if options.fetch(:connect_on_initialize, true)
|
12
|
+
end
|
12
13
|
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
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.
|
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
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.
|
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-
|
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
|