xlogin 0.9.7 → 0.9.11

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