gb_dispatch 0.0.3 → 0.0.4

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: b18fe6f1341ebf198e8ba506e103840bc1078690
4
- data.tar.gz: 5cb4c58bd07f1b2cdeaa4962043f64782cd0f47d
3
+ metadata.gz: fd041feeb927183160d8026c38344e6613eb2732
4
+ data.tar.gz: 64288309c1cace61a076ab1adee82d2a9ef41912
5
5
  SHA512:
6
- metadata.gz: 35fb353e35bed0ad9ad9f39a7310aae05c10b7c6e98a9e7a7099ae6dcbfc47038105306d13d8fcf658ba88e073248cc875f136fd9e7839ff363d571605f871a8
7
- data.tar.gz: aa4eb0cb361cb763811a33bec54c019204f9c409419805d0ab8a740ace9757388fe685c88973b04afc478c19f8396dddf5759a9c94594bc5c2160a0e725393a3
6
+ metadata.gz: 768ca64392814c1b0a72a9bef66e0114242f4fcb08d5b412e8665aa8bc8e26771d299909bcaf388e8e1717e36a92afb6025f667cd6728010713e117d2ed68554
7
+ data.tar.gz: 5f412a4ae3d9cdd91f3c3cf50130b206049adf6e426736700ec58ab6cfe0c79b3867008d905bc24fb7e93fb349f1babeafb72af4b3a7ddf074c69fe42dbcf4f5
data/CHANGELOG.txt CHANGED
@@ -1,3 +1,5 @@
1
+ v0.0.4
2
+ - Compatible with celluloid version 17.3
1
3
  v0.0.3
2
4
  - Change celluloid dependency beck to 0.15.2 - newer versions are unstable
3
5
  v0.0.2
data/Gemfile CHANGED
@@ -3,7 +3,7 @@ source 'https://rubygems.org'
3
3
  # Specify your gem's dependencies in gb_dispatch.gemspec
4
4
  gemspec
5
5
 
6
- gem 'celluloid', '~>0.15.2'
6
+
7
7
  group :test do
8
8
  gem 'rspec'
9
9
  gem 'simplecov', :require => false
data/Gemfile.lock CHANGED
@@ -1,16 +1,32 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- gb_dispatch (0.0.3)
5
- celluloid (~> 0.15.2)
4
+ gb_dispatch (0.0.4)
5
+ celluloid (~> 0.17.3)
6
6
 
7
7
  GEM
8
8
  remote: https://rubygems.org/
9
9
  specs:
10
- celluloid (0.15.2)
11
- timers (~> 1.1.0)
10
+ celluloid (0.17.3)
11
+ celluloid-essentials
12
+ celluloid-extras
13
+ celluloid-fsm
14
+ celluloid-pool
15
+ celluloid-supervision
16
+ timers (>= 4.1.1)
17
+ celluloid-essentials (0.20.5)
18
+ timers (>= 4.1.1)
19
+ celluloid-extras (0.20.5)
20
+ timers (>= 4.1.1)
21
+ celluloid-fsm (0.20.5)
22
+ timers (>= 4.1.1)
23
+ celluloid-pool (0.20.5)
24
+ timers (>= 4.1.1)
25
+ celluloid-supervision (0.20.5)
26
+ timers (>= 4.1.1)
12
27
  diff-lcs (1.2.5)
13
28
  docile (1.1.5)
29
+ hitimes (1.2.3)
14
30
  json (1.8.3)
15
31
  rake (10.5.0)
16
32
  rspec (3.4.0)
@@ -31,14 +47,14 @@ GEM
31
47
  json (~> 1.8)
32
48
  simplecov-html (~> 0.10.0)
33
49
  simplecov-html (0.10.0)
34
- timers (1.1.0)
50
+ timers (4.1.1)
51
+ hitimes
35
52
 
36
53
  PLATFORMS
37
54
  ruby
38
55
 
39
56
  DEPENDENCIES
40
57
  bundler (~> 1.6)
41
- celluloid (~> 0.15.2)
42
58
  gb_dispatch!
43
59
  rake (~> 10.0)
44
60
  rspec
data/gb_dispatch.gemspec CHANGED
@@ -18,7 +18,7 @@ Gem::Specification.new do |spec|
18
18
  spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
19
19
  spec.require_paths = ['lib']
20
20
 
21
- spec.add_dependency 'celluloid', '~> 0.15.2'
21
+ spec.add_dependency 'celluloid', '~> 0.17.3'
22
22
  spec.add_development_dependency 'bundler', '~> 1.6'
23
23
  spec.add_development_dependency 'rake', '~> 10.0'
24
24
  spec.add_development_dependency 'rspec', '~> 3.4'
@@ -14,12 +14,12 @@ module GBDispatch
14
14
  # Remember that for each allocated queue, there is new thread allocated.
15
15
  # @param name [String, Symbol] if not passed, default queue will be returned.
16
16
  # @return [GBDispatch::Queue]
17
- def get_queue(name=:default)
17
+ def get_queue(name=:default_queue)
18
18
  name = name.to_sym
19
19
  queue = Celluloid::Actor[name]
20
20
  unless queue
21
- supervisor = Queue.supervise_as name, name, @pool
22
- queue = supervisor.actors.first
21
+ Queue.supervise as: name, args: [name, @pool]
22
+ queue = Celluloid::Actor[name]
23
23
  end
24
24
  queue
25
25
  end
@@ -36,6 +36,7 @@ module GBDispatch
36
36
  # puts 'Delayed Hello World!'
37
37
  # end
38
38
  def run_async_on_queue(queue)
39
+ raise ArgumentError.new 'Queue must be GBDispatch::Queue' unless queue.is_a? GBDispatch::Queue
39
40
  queue.async.perform ->() { yield }
40
41
  end
41
42
 
@@ -52,6 +53,7 @@ module GBDispatch
52
53
  # 42
53
54
  # end
54
55
  def run_sync_on_queue(queue)
56
+ raise ArgumentError.new 'Queue must be GBDispatch::Queue' unless queue.is_a? GBDispatch::Queue
55
57
  future = queue.future.perform ->() { yield }
56
58
  future.value
57
59
  end
@@ -67,6 +69,7 @@ module GBDispatch
67
69
  # end
68
70
  #
69
71
  def run_after_on_queue(time, queue)
72
+ raise ArgumentError.new 'Queue must be GBDispatch::Queue' unless queue.is_a? GBDispatch::Queue
70
73
  queue.perform_after time, ->(){ yield }
71
74
  end
72
75
 
@@ -1,4 +1,4 @@
1
- require 'celluloid'
1
+ require 'celluloid/current'
2
2
  module GBDispatch
3
3
  class Queue
4
4
  include Celluloid
@@ -11,6 +11,7 @@ module GBDispatch
11
11
  def initialize(name, thread_pool)
12
12
  @name = name
13
13
  @thread_pool = thread_pool
14
+ @executing = false
14
15
  end
15
16
 
16
17
  # Perform given block
@@ -34,13 +35,19 @@ module GBDispatch
34
35
  else
35
36
  thread_block = block ? block : ->() { yield }
36
37
  end
37
- exclusive do
38
+ while @executing
39
+ sleep(0.0001)
40
+ end
41
+ #exclusive do
38
42
  begin
43
+ @executing = true
39
44
  @thread_pool.execute thread_block, name: name
40
45
  rescue Exception => e
41
46
  return e
47
+ ensure
48
+ @executing = false
42
49
  end
43
- end
50
+ #end
44
51
  end
45
52
 
46
53
  # Perform block after given period
@@ -53,5 +60,9 @@ module GBDispatch
53
60
  self.async.perform block
54
61
  end
55
62
  end
63
+
64
+ def to_s
65
+ self.name.to_s
66
+ end
56
67
  end
57
68
  end
@@ -1,4 +1,4 @@
1
- require 'celluloid'
1
+ require 'celluloid/current'
2
2
  module GBDispatch
3
3
  class Runner
4
4
  include Celluloid
@@ -1,3 +1,3 @@
1
1
  module GBDispatch
2
- VERSION = '0.0.3'
2
+ VERSION = '0.0.4'
3
3
  end
data/lib/gb_dispatch.rb CHANGED
@@ -1,6 +1,6 @@
1
1
  require 'gb_dispatch/version'
2
2
  require 'gb_dispatch/manager'
3
- require 'celluloid'
3
+
4
4
 
5
5
  # Library to dispatch block on queues.
6
6
  # It is inspired by GCD but implementation is based on Celluloid.
@@ -24,7 +24,7 @@ module GBDispatch
24
24
  # @param queue [Symbol, GBDispatch::Queue] queue object or name
25
25
  # @yield block to execute
26
26
  def self.dispatch_async(queue)
27
- queue = GBDispatch::Manager.instance.get_queue(queue) unless queue.is_a? GBDispatch::Queue
27
+ queue = get_queue(queue) unless queue.is_a? GBDispatch::Queue
28
28
  GBDispatch::Manager.instance.run_async_on_queue queue do
29
29
  yield
30
30
  end
@@ -34,7 +34,7 @@ module GBDispatch
34
34
  # @param queue [Symbol, GBDispatch::Queue] queue object or name
35
35
  # @yield block to execute
36
36
  def self.dispatch_sync(queue)
37
- queue = GBDispatch::Manager.instance.get_queue(queue) unless queue.is_a? GBDispatch::Queue
37
+ queue = get_queue(queue) unless queue.is_a? GBDispatch::Queue
38
38
  GBDispatch::Manager.instance.run_sync_on_queue queue do
39
39
  yield
40
40
  end
@@ -46,8 +46,8 @@ module GBDispatch
46
46
  # @param queue [Symbol, GBDispatch::Queue] queue object or name
47
47
  # @yield block to execute
48
48
  def self.dispatch_after(delay, queue)
49
- queue = GBDispatch::Manager.instance.get_queue(queue) unless queue.is_a? GBDispatch::Queue
50
- GBDispatch::Manager.instance.run_async_on_queue queue do
49
+ queue = get_queue(queue) unless queue.is_a? GBDispatch::Queue
50
+ GBDispatch::Manager.instance.run_after_on_queue delay, queue do
51
51
  yield
52
52
  end
53
53
  end
@@ -64,8 +64,4 @@ module GBDispatch
64
64
  alias_method :dispatch_async_on_queue, :dispatch_async
65
65
  alias_method :dispatch_after_on_queue, :dispatch_after
66
66
  end
67
-
68
- at_exit do
69
- GBDispatch::Manager.instance.exit
70
- end
71
67
  end
@@ -13,7 +13,7 @@ describe GBDispatch do
13
13
  a << 2
14
14
  end
15
15
  expect(a.empty?).to be_truthy
16
- sleep(0.02)
16
+ sleep(0.03)
17
17
  expect(a).to eq [1, 2]
18
18
  end
19
19
 
@@ -73,13 +73,13 @@ describe GBDispatch do
73
73
  a << 1
74
74
  end
75
75
  expect(a.empty?).to be_truthy
76
- sleep(0.15)
76
+ sleep(0.2)
77
77
  expect(a).to eq [1]
78
78
  end
79
79
 
80
80
  it 'should return proper queue' do
81
81
  queue = GBDispatch.get_queue :test
82
- expect(queue.name).to eq :test
83
82
  expect(queue).to be_a GBDispatch::Queue
83
+ expect(queue.name).to eq :test
84
84
  end
85
85
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: gb_dispatch
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.3
4
+ version: 0.0.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Kacper Kawecki
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-01-15 00:00:00.000000000 Z
11
+ date: 2016-02-16 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: celluloid
@@ -16,14 +16,14 @@ dependencies:
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: 0.15.2
19
+ version: 0.17.3
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
- version: 0.15.2
26
+ version: 0.17.3
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: bundler
29
29
  requirement: !ruby/object:Gem::Requirement
@@ -132,7 +132,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
132
132
  version: '0'
133
133
  requirements: []
134
134
  rubyforge_project:
135
- rubygems_version: 2.4.8
135
+ rubygems_version: 2.5.1
136
136
  signing_key:
137
137
  specification_version: 4
138
138
  summary: GCD emulation for ruby