celluloid-promise 1.0.2 → 1.0.3

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,15 +1,15 @@
1
1
  ---
2
2
  !binary "U0hBMQ==":
3
3
  metadata.gz: !binary |-
4
- YjRkODIzNWFkZDAwNWQyZjlmZDI5ZjI1NGI4MDZjOTgzNWQ4ZDMxYQ==
4
+ Y2NhOWI2MjI1NTU4ZWZhZDQ2ZTgwOTdmNWRjNzUxMDUwODgyY2ExNQ==
5
5
  data.tar.gz: !binary |-
6
- MjM0N2I0YzUxNzViMDY2YTc4MjIwMjRlNmQ2YzhmZGYwMzMzYmVjOA==
6
+ YmJiYjA3MTY3ZGY3MDNmNjJiOTQ5NjNlMjIyMTcwYjg5N2QzN2NkZA==
7
7
  !binary "U0hBNTEy":
8
8
  metadata.gz: !binary |-
9
- YmFiN2ZmNjM5YzQzYThkOWRhMTJkNjgzNDI0NzVlNTllMjJjOWE1YjY2YTdm
10
- ZjM3NWI0MTY2ZDZkOTRhMTgyYWY3YzdjOWQyYzE4NjJlNzMzYTRmMmZkOWYz
11
- N2YxNTI1MjgwYTI4NGY5NDRhYTRmM2U3YmIyYTU5MGE2NWZhOGI=
9
+ ODFmYzJhOTg1M2Y5ZTViNjhlNTExYTQ5YjhmNmM4ZWFmNTU5YTNhNDA0ZmYz
10
+ ZDQzOTMwMWQ1NzJhOTIyYmRlMzQ2NjAxMzQyMDc5Njc2ODk1N2ZjMWJkZDc2
11
+ N2Y5MjI4ODkzOTkwZDY3YmNiN2ZhOTFhYzc1OTYxOGU2M2ZiMDg=
12
12
  data.tar.gz: !binary |-
13
- ZDUwNzllYzMxNzRhOWZiZjBkODUwYmE0NjI0ZjQ3MmQ4ZGQ5YjBkNTQ1YTk1
14
- NjU4MGRjNDg0ZjEwMzRhYmY1YjExMjk3ZTM5YTkzYmMyMzZhMGMyZWMwZjFj
15
- NDY0OWU5Y2E4NzdkNzMyZjk3NmRkYjNlMGI0YTMwNWNhNDA2MmQ=
13
+ N2Q4NDFmYTcwMWUxZjAwZTgzMjJiMDhmOWExYTg3YzkwMmJiY2ZhYWExZWVh
14
+ MWIxOTBmZmI5MGZkNGM4ZGI1NjU0MWNjOGFlOWI2NWU0NTUyMzE2ZDk5YTgy
15
+ NTQzZTUyMDEyM2ExZmVlZWUwNTgwYjFhYjhmYzZmNjNkNzhmZGQ=
@@ -8,7 +8,7 @@ module Celluloid
8
8
  class Reactor
9
9
  include ::Celluloid
10
10
 
11
- def task
11
+ def perform
12
12
  yield if block_given?
13
13
  end
14
14
  end
@@ -44,7 +44,7 @@ module Celluloid
44
44
  # @param [Proc, Proc, &blk] callbacks success, error, success_block
45
45
  # @return [Promise] Returns an unresolved promise for chaining
46
46
  def then(callback = nil, errback = nil, &blk)
47
- result = Q.defer
47
+ result = ::Celluloid::Actor[:Q].defer(@reactor)
48
48
 
49
49
  callback ||= blk
50
50
 
@@ -78,7 +78,7 @@ module Celluloid
78
78
  # Schedule as we are touching shared state
79
79
  # Everything else is locally scoped
80
80
  #
81
- @reactor.async.task do
81
+ @reactor.async.perform do
82
82
  pending_array = pending
83
83
 
84
84
  if pending_array.nil?
@@ -118,11 +118,11 @@ module Celluloid
118
118
  end
119
119
 
120
120
  def then(callback = nil, errback = nil, &blk)
121
- result = Q.defer
121
+ result = ::Celluloid::Actor[:Q].defer(@reactor)
122
122
 
123
123
  callback ||= blk
124
124
 
125
- @reactor.async.task do
125
+ @reactor.async.perform do
126
126
  if @error
127
127
  if errback.nil?
128
128
  result.resolve(ResolvedPromise.new(@reactor, @response, true))
@@ -164,7 +164,7 @@ module Celluloid
164
164
  #
165
165
  # @param [Object] val constant, message or an object representing the result.
166
166
  def resolve(val = nil)
167
- @reactor.async.task do
167
+ @reactor.async.perform do
168
168
  if not @pending.nil?
169
169
  callbacks = @pending
170
170
  @pending = nil
@@ -223,8 +223,8 @@ module Celluloid
223
223
  # Creates a Deferred object which represents a task which will finish in the future.
224
224
  #
225
225
  # @return [Deferred] Returns a new instance of Deferred
226
- def defer
227
- return Deferred.new(next_reactor)
226
+ def defer(reactor = nil)
227
+ return Deferred.new(next_reactor(reactor))
228
228
  end
229
229
 
230
230
 
@@ -316,13 +316,13 @@ module Celluloid
316
316
 
317
317
  #
318
318
  # Promises are placed on reactor threads in a round robin
319
- # I would have used pool however Celluloid::IO allows us to run
320
- # multiple concurrent promise chains on each reactor, pool can't.
319
+ # I would have used pool however pool blocks to completion and doesn't
320
+ # allows us to run multiple concurrent promise chains on each reactor.
321
321
  #
322
- def next_reactor
322
+ def next_reactor(current = nil)
323
323
  @current = @current >= (@reactors.length - 1) ? 0 : @current + 1
324
324
  selected = @reactors[@current]
325
- selected != Celluloid::Actor.current ? selected : next_reactor
325
+ selected != current ? selected : next_reactor(current)
326
326
  end
327
327
  end
328
328
  end
@@ -334,15 +334,15 @@ module Celluloid
334
334
  Promise::Coordinator.supervise_as :Q
335
335
  module Q
336
336
  def self.defer
337
- Actor[:Q].defer
337
+ ::Celluloid::Actor[:Q].defer
338
338
  end
339
339
 
340
340
  def self.reject(reason = nil)
341
- Actor[:Q].reject(reason)
341
+ ::Celluloid::Actor[:Q].reject(reason)
342
342
  end
343
343
 
344
344
  def self.all(*promises)
345
- Actor[:Q].all(*promises)
345
+ ::Celluloid::Actor[:Q].all(*promises)
346
346
  end
347
347
  end
348
348
  end
@@ -1,6 +1,6 @@
1
1
  module Celluloid
2
2
  module Promise
3
- VERSION = "1.0.2"
3
+ VERSION = "1.0.3"
4
4
  end
5
5
  end
6
6
 
@@ -17,10 +17,9 @@ describe Celluloid::Q do
17
17
  @promise = @deferred.promise
18
18
  @log = []
19
19
  @finish = proc {
20
- while(@mutex.locked?); end
21
- @mutex.synchronize {
22
- @resource.signal
23
- }
20
+ while(!@mutex.try_lock); end
21
+ @resource.signal
22
+ @mutex.unlock
24
23
  }
25
24
  @default_fail = proc { |reason|
26
25
  fail(reason)
@@ -127,7 +126,7 @@ describe Celluloid::Q do
127
126
  it "can modify the result of a promise before returning" do
128
127
  @mutex.synchronize {
129
128
  proc { |name|
130
- @defer.async.task {
129
+ @defer.async.perform {
131
130
  @deferred.resolve("Hello #{name}")
132
131
  }
133
132
  @promise.then(proc {|result|
@@ -262,9 +261,9 @@ describe Celluloid::Q do
262
261
  @finish.call
263
262
  }, @default_fail)
264
263
 
265
- @defer.async.task { @deferred.resolve(:foo) }
266
- @defer.async.task { deferred2.resolve(:baz) }
267
- @defer.async.task { deferred1.resolve(:bar) }
264
+ @defer.async.perform { @deferred.resolve(:foo) }
265
+ @defer.async.perform { deferred2.resolve(:baz) }
266
+ @defer.async.perform { deferred1.resolve(:bar) }
268
267
 
269
268
  @resource.wait(@mutex)
270
269
  }
@@ -281,8 +280,8 @@ describe Celluloid::Q do
281
280
  @finish.call
282
281
  })
283
282
 
284
- @defer.async.task { @deferred.resolve(:foo) }
285
- @defer.async.task { deferred2.reject(:baz) }
283
+ @defer.async.perform { @deferred.resolve(:foo) }
284
+ @defer.async.perform { deferred2.reject(:baz) }
286
285
 
287
286
  @resource.wait(@mutex)
288
287
  }
@@ -369,19 +368,19 @@ describe Celluloid::Q do
369
368
  @mutex.synchronize {
370
369
  @promise.then(proc {|result|
371
370
  @log << result
372
- :alt1
371
+ :alt
373
372
  }, @default_fail)
374
373
  @promise.then(proc {|result|
375
374
  @log << result
376
- 'ERROR'
375
+ nil
377
376
  }, @default_fail)
378
377
  @promise.then(proc {|result|
379
378
  @log << result
380
- EM::Q.reject('some reason')
379
+ Celluloid::Q.reject('some reason')
381
380
  }, @default_fail)
382
381
  @promise.then(proc {|result|
383
382
  @log << result
384
- :alt2
383
+ raise 'some error'
385
384
  }, @default_fail)
386
385
  @promise.then(proc {
387
386
  @finish.call
@@ -399,19 +398,19 @@ describe Celluloid::Q do
399
398
  @mutex.synchronize {
400
399
  @promise.then(@default_fail, proc {|result|
401
400
  @log << result
402
- :alt1
401
+ :alt
403
402
  })
404
403
  @promise.then(@default_fail, proc {|result|
405
404
  @log << result
406
- 'ERROR'
405
+ nil
407
406
  })
408
407
  @promise.then(@default_fail, proc {|result|
409
408
  @log << result
410
- EM::Q.reject('some reason')
409
+ Celluloid::Q.reject('some reason')
411
410
  })
412
411
  @promise.then(@default_fail, proc {|result|
413
412
  @log << result
414
- :alt2
413
+ raise 'some error'
415
414
  })
416
415
  @promise.then(@default_fail, proc {|result|
417
416
  @finish.call
@@ -470,8 +469,8 @@ describe Celluloid::Q do
470
469
  class BlockingActor
471
470
  include ::Celluloid
472
471
 
473
- def wait
474
- sleep (10..20).to_a.sample
472
+ def delayed_response
473
+ sleep (5..10).to_a.sample
475
474
  end
476
475
  end
477
476
 
@@ -486,7 +485,7 @@ describe Celluloid::Q do
486
485
  deferred_store = []
487
486
 
488
487
  args = [proc {|val|
489
- actor.wait
488
+ actor.delayed_response
490
489
  count.update {|v| v + 1}
491
490
  }, @default_fail]
492
491
 
@@ -506,6 +505,9 @@ describe Celluloid::Q do
506
505
 
507
506
  @deferred.resolve()
508
507
  @resource.wait(@mutex)
508
+
509
+ actor.terminate
510
+ ::Celluloid::Actor.kill(actor)
509
511
  }
510
512
  end
511
513
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: celluloid-promise
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.2
4
+ version: 1.0.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Stephen von Takach