gt06_server 0.1.2 → 0.1.3

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: 65de6007ff4e6820923d218b8b1fa456e9d959c0
4
- data.tar.gz: 48924b53a835183b0c498fe10289432bbc26cc3f
3
+ metadata.gz: 110c18021a1b6683881e02b991700e6d947b1a6c
4
+ data.tar.gz: e07adca758918fc0799062e5b12dd997bb1cf2df
5
5
  SHA512:
6
- metadata.gz: 9d8340f677b22d7f87432f0d2722db738745f264a5ce6ecf9ef71749d0107ad7001ba0481a49b15bc8568de137127f423b60908fe73a1aafcf39f634cc67faae
7
- data.tar.gz: f0856270a9b4e8a156a85ae6e0e6f38b6ce79483d70bb939dd7f388202a6e3334fdc59880d9a732b17fcc32102063af49ac5f35e242eff558838b009cd514636
6
+ metadata.gz: 5cb46fe3400afcc1a00448673ee629e65a87b3c2f55a00b9c0cee649e84679a1741d49015e75600229c70c43136b1f64a215fada55a734a4752a7cba71659b45
7
+ data.tar.gz: 23ce3b787b999c3bc5272b1d8504896c3a79b3bba9d5503c36b0404f866679ee254e317ea27ab419944e9bb6161a523874f406ff3881d4ec3722be7f907d62cf
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- gt06_server (0.1.1)
4
+ gt06_server (0.1.2)
5
5
  bindata (~> 2.3)
6
6
  celluloid-io (~> 0.17.3)
7
7
  concurrent-ruby (~> 1.0)
@@ -3,11 +3,12 @@ module Gt06Server
3
3
  class Session
4
4
  class SessionError < RuntimeError; end
5
5
 
6
- attr_reader :terminal_id, :io, :info, :logger, :addr
6
+ attr_reader :terminal_id, :socket, :info, :logger, :addr
7
7
 
8
- def initialize(io, logger: Logger.new(STDOUT))
9
- @io = io
10
- @addr = io.peeraddr
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(@io))
22
+ handle_head_pack(Protocol.read_pack(@socket))
22
23
 
23
24
  loop do
24
- handle_main_pack(Protocol.read_pack(@io), &block)
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
- @io.write(Protocol.replay_on(pack).to_binary_s)
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 (ack_pack)
57
- @io.write(ack_pack.to_binary_s)
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.info[:last_received_at] + @timeout) < time_now
20
- session.io.setsockopt(Socket::SOL_SOCKET, Socket::SO_LINGER, [1,0].pack('ii'))
21
- session.io.close
22
-
23
- @logger.debug "Session #{session.inspect} has been closed"
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
@@ -1,4 +1,4 @@
1
1
  # frozen_string_literal: true
2
2
  module Gt06Server
3
- VERSION = '0.1.2'
3
+ VERSION = '0.1.3'
4
4
  end
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.2
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-24 00:00:00.000000000 Z
11
+ date: 2016-12-26 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bindata