upfluence-utils 0.6.1 → 0.6.2

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
  SHA256:
3
- metadata.gz: 3cf0103ec5ea88db6e92869554f2f061f7f95f6587b212e06af7163f7d39c877
4
- data.tar.gz: 81af3b8f8e2a21ba723111f9a168059ad3e6f16a628b59f36a62c41dd7d5eb39
3
+ metadata.gz: d9bb165753378088d8c1aa9ac2d8a806ca616e55a757470fce8661b3b7d583f1
4
+ data.tar.gz: 0ba2eea8776f3fe667f7b706832c27a132622b017f7d66ac36b6ea0f60540852
5
5
  SHA512:
6
- metadata.gz: ac54b32db32e512e9f2ad857e794284653d2bcbfd1545275b9783d33ada9a7e55c3a7b1db4c3203bf9901b12f8ad0a7bb5b2844b2e6e663655a6bf427fc4a677
7
- data.tar.gz: f60a5082e72ae1600246264a2d329fe8240a6ce352410adf1f5e927ec0bbf2608299ae53a6b6f89571917142e617a6283183e2e24aa737936a15e5a7398af9ad
6
+ metadata.gz: 3dc614b510107cdb8a4288e6acdd7919f77909d56642eb9d68ca89ddbf9f98890b0536424b08853ff8ac3a139af3dee7e6050721526139eebf5e283a2c0d825e
7
+ data.tar.gz: 5eb0e42513b6ff40510a01d649ed1d7867c5afc32fbc5136df2be3f90ef20362fd3e2dff34658985f55a0385654f800134f2575aa33ac20d8aa46b950b089da4
@@ -1,5 +1,6 @@
1
1
  require 'upfluence/utils/version'
2
2
  require 'upfluence/utils/thrift'
3
+ require 'upfluence/utils/semaphore'
3
4
  require 'upfluence/logger'
4
5
  require 'upfluence/error_logger'
5
6
  require 'upfluence/environment'
@@ -0,0 +1,38 @@
1
+ module Upfluence
2
+ module Utils
3
+ class Semaphore
4
+ def initialize(size)
5
+ @size = size
6
+ @used = 0
7
+ @mutex = Mutex.new
8
+ @cond = ConditionVariable.new
9
+ end
10
+
11
+ def acquire(count = 1)
12
+ @mutex.synchronize do
13
+ loop do
14
+ break if @used + count <= @size
15
+
16
+ @cond.wait(@mutex)
17
+ end
18
+
19
+ @used += count
20
+ end
21
+ end
22
+
23
+ def release(count = 1)
24
+ @mutex.synchronize do
25
+ @used -= count
26
+ @cond.broadcast
27
+ end
28
+ end
29
+
30
+ def synchronize(count = 1, &block)
31
+ acquire(count)
32
+ block.call
33
+ ensure
34
+ release(count)
35
+ end
36
+ end
37
+ end
38
+ end
@@ -1,5 +1,5 @@
1
1
  module Upfluence
2
2
  module Utils
3
- VERSION = '0.6.1'.freeze
3
+ VERSION = '0.6.2'.freeze
4
4
  end
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: upfluence-utils
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.6.1
4
+ version: 0.6.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Upfluence
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-02-18 00:00:00.000000000 Z
11
+ date: 2020-03-17 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -265,6 +265,7 @@ files:
265
265
  - lib/upfluence/pool.rb
266
266
  - lib/upfluence/utils.rb
267
267
  - lib/upfluence/utils/http/middleware/null.rb
268
+ - lib/upfluence/utils/semaphore.rb
268
269
  - lib/upfluence/utils/thrift.rb
269
270
  - lib/upfluence/utils/thrift/middleware.rb
270
271
  - lib/upfluence/utils/thrift/middleware/active_record.rb