xlogin 0.9.7 → 0.9.11

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: ec297c1795e189edc5d9076dfad133d6392f48b1
4
- data.tar.gz: c4c83473643e46652a1f0e49d9bbc00b123f8a08
3
+ metadata.gz: 28cb6da4487ca47b89f51e47062381da8fa717f7
4
+ data.tar.gz: 025f251c6b0faaee4cb65efb0331f0cba384f70d
5
5
  SHA512:
6
- metadata.gz: 60144799caaba76aae2b0c3ed47639bd684fb25cb6cd73c2359f8e95ba5dd83c0539ce670f4ca9f9eb42ee27c0aab095a710e18a1918eb1e698d8a9ea937406b
7
- data.tar.gz: 841017f024966f85a95292ad78fc68fd0281ff39256b95395af26da4c326d182c8f82b834a18310104d9523fe5d2cbc3ac467208eca9a0766e6759f1b40b25cf
6
+ metadata.gz: 99e938853de8d38f268f2b78472078b92b78306c8284ca87ae43923fb4ae06f10674965827b8da20268dd95b69c36d22b7200c13444f3c4934748f74cedc0c2f
7
+ data.tar.gz: e0eda12bcc603852a8342fb5cfbdc08b2483db4a15d01c06eec6f222cfd1ad3697c90ce2a5ef0c608a0745c364ae0a67ebf94025445f5ec514eb5657a837a3eb
data/lib/xlogin/cli.rb CHANGED
@@ -66,9 +66,9 @@ module Xlogin
66
66
 
67
67
  config.hostlist = Xlogin.list(*host.to_s.split(/\s+/))
68
68
  raise "No host found: `#{host}`" if config.hostlist.empty?
69
- #rescue => e
70
- # $stderr.puts e, '', parser
71
- # exit 1
69
+ rescue => e
70
+ $stderr.puts e, '', parser
71
+ exit 1
72
72
  end
73
73
 
74
74
  config
@@ -84,7 +84,7 @@ module Xlogin
84
84
  end
85
85
 
86
86
  def enable_log(log = $stdout)
87
- @loggers.update(log => build_loggers(log))
87
+ @loggers.update(log => build_logger(log))
88
88
  if block_given?
89
89
  yield
90
90
  disable_log(log)
@@ -5,29 +5,32 @@ module Xlogin
5
5
  class SessionPool
6
6
 
7
7
  DEFAULT_POOL_SIZE = 1
8
+ DEFAULT_POOL_IDLE = 60
8
9
 
9
10
  def initialize(args, **opts)
10
11
  @args = args
11
12
  @opts = opts
12
- @size = case @args
13
- when String then @opts.delete(:pool_size) || DEFAULT_POOL_SIZE
14
- when Hash then @args.delete(:pool_size) || DEFAULT_POOL_SIZE
15
- end
13
+
14
+ case @args
15
+ when String
16
+ @size = @opts.delete(:pool_size) || DEFAULT_POOL_SIZE
17
+ @idle = @opts.delete(:pool_idle) || DEFAULT_POOL_IDLE
18
+ when Hash
19
+ @size = @args.delete(:pool_size) || DEFAULT_POOL_SIZE
20
+ @idle = @args.delete(:pool_idle) || DEFAULT_POOL_IDLE
21
+ end
16
22
 
17
23
  @mutex = Mutex.new
18
24
  @queue = Queue.new
19
-
20
25
  @created = 0
21
26
  end
22
27
 
23
28
  def with
24
29
  session = deq
25
-
26
30
  begin
27
31
  session.prompt
28
32
  rescue IOError, EOFError, Errno::ECONNABORTED, Errno::ECONNREFUSED, Errno::ECONNRESET
29
- session.close rescue nil
30
- @created -= 1
33
+ destroy session
31
34
  session = try_create
32
35
  end
33
36
 
@@ -36,15 +39,29 @@ module Xlogin
36
39
  enq session
37
40
  end
38
41
 
42
+ def close
43
+ while @queue.empty?
44
+ session, _ = @queue.deq
45
+ destroy session
46
+ end
47
+ end
48
+
39
49
  private
40
50
  def deq
41
- session = try_create
42
- session = @queue.deq unless session
51
+ unless session = try_create
52
+ session, timer = @queue.deq
53
+ timer.kill
54
+ end
43
55
  session
44
56
  end
45
57
 
46
58
  def enq(session)
47
- @queue.enq session
59
+ timer = Thread.new do
60
+ sleep @idle * 1.2
61
+ session.close rescue nil
62
+ end
63
+
64
+ @queue.enq [session, timer]
48
65
  end
49
66
 
50
67
  def try_create
@@ -56,6 +73,13 @@ module Xlogin
56
73
  end
57
74
  end
58
75
 
76
+ def destroy(session)
77
+ @mutex.synchronize do
78
+ session.close rescue nil
79
+ @created -= 1
80
+ end
81
+ end
82
+
59
83
  end
60
84
 
61
85
  end
@@ -1,3 +1,3 @@
1
1
  module Xlogin
2
- VERSION = "0.9.7"
2
+ VERSION = "0.9.11"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: xlogin
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.9.7
4
+ version: 0.9.11
5
5
  platform: ruby
6
6
  authors:
7
7
  - haccht
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-11-29 00:00:00.000000000 Z
11
+ date: 2018-12-07 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: net-telnet