xlogin 0.4.1 → 0.4.2

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: 01f1dcfc4664204170ef0065396788768d5ac676
4
- data.tar.gz: a4bf5740a6ca77b67a64497b7cded0942e689f9e
3
+ metadata.gz: db3b8cd353f6a89b6ed68d91938792373cfc5736
4
+ data.tar.gz: 7e0a77c42f1eadd89005b753159cf92f53553a1a
5
5
  SHA512:
6
- metadata.gz: e8bf704c7af2aef3f090951d94088d8ec49c985eff1226333be5d540a0171e1022efdb7cad142c5642d11024418c91d0e695f7c01d0dac4f388454433f550706
7
- data.tar.gz: fc21595ec2a4acb907eb9f6dfd77154f3097b8afff7e7e21fd1548e8ca14d617e183a0bd7f56de3238006975f588f2f3a43ca2c4d62216c71c0d513ac233be68
6
+ metadata.gz: c40fa0be1ae038ce25114eaec6e435fec55290190edeaffabf2e8d3fff65c79a78494ba9efb94b4b7253906d32aefa0bc9649bdb69416e77f63480e948df913d
7
+ data.tar.gz: 929b4ebc925e83d8cc0d8600162be6821ef420beb69b7dbc847a529c67987ab697acdf02042100bb3afabdc63392625efee4467b699c4dc231dc81932d27464b
@@ -1,3 +1,5 @@
1
+ require 'thread'
2
+ require 'timeout'
1
3
  require 'stringio'
2
4
 
3
5
  module Xlogin
@@ -18,24 +20,29 @@ module Xlogin
18
20
 
19
21
  @loglist = [@opts[:log]].flatten.compact
20
22
  @logger = update_logger
23
+
24
+ @mutex = Mutex.new
21
25
  end
22
26
 
23
- def thread_safe(timeout: @timeout, maximum_retry: 1)
24
- @safe_session = self
25
- @safe_session_mutex ||= Mutex.new
27
+ def lock(timeout: @timeout, max_retry: 1)
28
+ session_granted = false
29
+
30
+ begin
31
+ Timeout.timeout(timeout) { @mutex.lock }
32
+ retry_count = 0
33
+ safe_session = self
34
+ session_granted = true
26
35
 
27
- Timeout.timeout(timeout) do
28
- @safe_session_mutex.synchronize do
29
- retry_count = 0
30
- begin
31
- @safe_session ||= Xlogin.get(@host, @opts)
32
- yield @safe_session
33
- rescue Errno::ECONNRESET => e
34
- raise e unless (retry_count += 1) < maximum_retry
35
- @safe_session = nil
36
- retry
37
- end
36
+ begin
37
+ safe_session ||= Xlogin.get(@host, @opts)
38
+ yield safe_session
39
+ rescue Errno::ECONNRESET => e
40
+ raise e unless (retry_count += 1) < max_retry
41
+ safe_session = nil
42
+ retry
38
43
  end
44
+ ensure
45
+ @mutex.unlock if @mutex.locked? && session_granted
39
46
  end
40
47
  end
41
48
 
@@ -1,3 +1,3 @@
1
1
  module Xlogin
2
- VERSION = "0.4.1"
2
+ VERSION = "0.4.2"
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.4.1
4
+ version: 0.4.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - haccht
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2017-07-12 00:00:00.000000000 Z
11
+ date: 2017-07-14 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler