gt06_server 0.1.2 → 0.1.3
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Gemfile.lock +1 -1
- data/lib/gt06_server/session.rb +10 -9
- data/lib/gt06_server/session_sweeper.rb +13 -7
- data/lib/gt06_server/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 110c18021a1b6683881e02b991700e6d947b1a6c
|
4
|
+
data.tar.gz: e07adca758918fc0799062e5b12dd997bb1cf2df
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 5cb46fe3400afcc1a00448673ee629e65a87b3c2f55a00b9c0cee649e84679a1741d49015e75600229c70c43136b1f64a215fada55a734a4752a7cba71659b45
|
7
|
+
data.tar.gz: 23ce3b787b999c3bc5272b1d8504896c3a79b3bba9d5503c36b0404f866679ee254e317ea27ab419944e9bb6161a523874f406ff3881d4ec3722be7f907d62cf
|
data/Gemfile.lock
CHANGED
data/lib/gt06_server/session.rb
CHANGED
@@ -3,11 +3,12 @@ module Gt06Server
|
|
3
3
|
class Session
|
4
4
|
class SessionError < RuntimeError; end
|
5
5
|
|
6
|
-
attr_reader :terminal_id, :
|
6
|
+
attr_reader :terminal_id, :socket, :info, :logger, :addr
|
7
7
|
|
8
|
-
|
9
|
-
|
10
|
-
@
|
8
|
+
# @param socket [TCPSocket]
|
9
|
+
def initialize(socket, logger: Logger.new(STDOUT))
|
10
|
+
@socket = socket
|
11
|
+
@addr = socket.peeraddr
|
11
12
|
@terminal_id = ''
|
12
13
|
@info = { received_count: 0, sent_count: 0, last_received_at: Time.now}
|
13
14
|
@logger = logger
|
@@ -18,10 +19,10 @@ module Gt06Server
|
|
18
19
|
# @yield [Hash] information_content of packet
|
19
20
|
# @raise EOF
|
20
21
|
def run(&block)
|
21
|
-
handle_head_pack(Protocol.read_pack(@
|
22
|
+
handle_head_pack(Protocol.read_pack(@socket))
|
22
23
|
|
23
24
|
loop do
|
24
|
-
handle_main_pack(Protocol.read_pack(@
|
25
|
+
handle_main_pack(Protocol.read_pack(@socket), &block)
|
25
26
|
end
|
26
27
|
end
|
27
28
|
|
@@ -38,7 +39,7 @@ module Gt06Server
|
|
38
39
|
|
39
40
|
@terminal_id = pack.payload.information_content.terminal_id.to_hex
|
40
41
|
@info[:received_count] += 1
|
41
|
-
@
|
42
|
+
@socket.write(Protocol.replay_on(pack).to_binary_s)
|
42
43
|
@info[:sent_count] += 1
|
43
44
|
|
44
45
|
logger.debug "terminal_id: #{@terminal_id} , info #{@info}"
|
@@ -53,8 +54,8 @@ module Gt06Server
|
|
53
54
|
block.yield(pack.payload)
|
54
55
|
|
55
56
|
ack_pack = Protocol.replay_on(pack)
|
56
|
-
if
|
57
|
-
@
|
57
|
+
if ack_pack
|
58
|
+
@socket.write(ack_pack.to_binary_s)
|
58
59
|
@info[:sent_count] += 1
|
59
60
|
end
|
60
61
|
end
|
@@ -14,16 +14,15 @@ module Gt06Server
|
|
14
14
|
|
15
15
|
def run
|
16
16
|
timer = Concurrent::TimerTask.new(execution_interval: @interval) do
|
17
|
-
time_now = Time.now
|
18
17
|
@sessions.each_pair do |key, session|
|
19
|
-
if (session
|
20
|
-
session.
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
18
|
+
if expired_session?(session)
|
19
|
+
unless session.socket.closed?
|
20
|
+
session.socket.setsockopt(Socket::SOL_SOCKET, Socket::SO_LINGER, [1, 0].pack('ii'))
|
21
|
+
session.socket.close
|
22
|
+
end
|
25
23
|
@info[:killed] += 1
|
26
24
|
@sessions.delete(key)
|
25
|
+
@logger.debug "Session #{session.inspect} has been killed"
|
27
26
|
end
|
28
27
|
end
|
29
28
|
|
@@ -37,6 +36,13 @@ module Gt06Server
|
|
37
36
|
timer.execute
|
38
37
|
end
|
39
38
|
|
39
|
+
private
|
40
|
+
|
41
|
+
def expired_session?(session)
|
42
|
+
(session.info[:last_received_at] + @timeout) < Time.now
|
43
|
+
end
|
44
|
+
|
45
|
+
|
40
46
|
class SessionSweeperObserver
|
41
47
|
def initialize(logger)
|
42
48
|
@logger = logger
|
data/lib/gt06_server/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: gt06_server
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- CoolElvis
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-12-
|
11
|
+
date: 2016-12-26 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bindata
|