daemon_runner 0.4.2 → 0.4.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: 8f9b54559e80630efbf1a6a5b6f459888cd296f9
4
- data.tar.gz: a7f763bdc385cc88ee530550476d9c4baf1a3cd3
3
+ metadata.gz: 904130a5e584d5289d5c79fcf9d1b2a774197d92
4
+ data.tar.gz: 26f381f1da698cb34e8d95c29129d59e2542c299
5
5
  SHA512:
6
- metadata.gz: ed46495953d0fdb759470475c3f25b97428be13a3c25f391a3b3271d18ffd808e69ff2b79dfd949be36b6ca649c436f4413c1dc2dd78ca3a9244b126a861ca85
7
- data.tar.gz: 332319f3d280c60481831f5a1d4e8abe0059517bb4bb79bd19d6cb508521f6b9f43b28c1b5300ebc7843432a0016f83d25f1366f8cfc4cbb72a4624b199c1d5f
6
+ metadata.gz: c86c6879bf334c8a9be54ec8b6d89eb134f38ed10d13b7a14213ca1c39e50039f2ebc41de2df7d894dec429076fc6a9ba160c09e95a21396173ff9e07c840235
7
+ data.tar.gz: 362df5d4b4a478225792477ff510ac5e347ee27b4f8622107be7610c67d1d990469ee6a54ec670041100ab71f36ab8be228c050877e748f588a2a9064ae23b6e
@@ -16,10 +16,15 @@ module DaemonRunner
16
16
  #
17
17
  def lock(name, limit = 3, **options)
18
18
  options.merge!(name: name)
19
+ options.merge!(limit: limit)
19
20
  semaphore = Semaphore.new(options)
20
21
  semaphore.lock
21
22
  if block_given?
22
23
  begin
24
+ until semaphore.locked?
25
+ semaphore.try_lock
26
+ sleep 0.1
27
+ end
23
28
  lock_thr = semaphore.renew
24
29
  yield
25
30
  ensure
@@ -80,6 +85,14 @@ module DaemonRunner
80
85
  try_lock
81
86
  end
82
87
 
88
+ # Check if the semaphore holds the lock
89
+ #
90
+ # @return [Boolean] `true` if the lock is held, `false` otherwise
91
+ def locked?
92
+ semaphore_state
93
+ lock_exists? && (lock_content['Holders'] || []).include?(session.id)
94
+ end
95
+
83
96
  # Renew lock watching for changes
84
97
  # @return [Thread] Thread running a blocking call maintaining the lock state
85
98
  #
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: daemon_runner
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.2
4
+ version: 0.4.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Andrew Thompson
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2016-11-18 00:00:00.000000000 Z
11
+ date: 2016-11-23 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: logging