daemon_runner 0.4.2 → 0.4.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: 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