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