async 1.28.2 → 1.28.7

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
  SHA256:
3
- metadata.gz: a043ccb6378ff70b23eff7218723e910af5828508241e4ca87bb59669eee5990
4
- data.tar.gz: c1891f280b416fd092caa8e54473697856718d55a820dc784ad3026ba301c4b7
3
+ metadata.gz: b128ca85a69e6f07c87da25bc6c138a1198141cb01b02200ede0a677313a98dc
4
+ data.tar.gz: d9b0bae05938d165d08e6812fe9c08a8908cbae4826945a69b70b62cfee81059
5
5
  SHA512:
6
- metadata.gz: 61abcad6fc07e331c6eaba134865e329964b7c8c87f23338e4f8ce39dd250fa2c9719e83eb74a55c284ada13873f5ad996ba68162c131be2a933b67a124d17ed
7
- data.tar.gz: b5039970211fec3361ee6bf8044be988771a968a7f43ca8f20d3a4eea95234fc45fbc78f395b8ff2a9cb77407865915102ca38936b57c875fa1b07848050cae3
6
+ metadata.gz: 5a600ab32546c19049ba04a6ada9637db0e8c128d70e259a994da70a6e00e4fdc70a4a7de91e2149ded2cb1738d8f07a2cb8cdab79d06927cbd78d895e1d3bf9
7
+ data.tar.gz: 2a90f534c8d0ff01b2bff0a23fea131b24affae3a1c239f3d7bde17beadfb7ba462528d0de2f23b54cf1d564fd3622dd8a24462a7328690234ba3a3286692d9d
data/lib/async/reactor.rb CHANGED
@@ -102,7 +102,7 @@ module Async
102
102
  fiber = Fiber.current
103
103
 
104
104
  if timeout
105
- timer = self.after(timeout) do
105
+ timer = @timers.after(timeout) do
106
106
  if fiber.alive?
107
107
  fiber.resume(false)
108
108
  end
@@ -111,7 +111,7 @@ module Async
111
111
 
112
112
  begin
113
113
  @blocked += 1
114
- Fiber.yield
114
+ Task.yield
115
115
  ensure
116
116
  @blocked -= 1
117
117
  end
@@ -198,7 +198,7 @@ module Async
198
198
  def yield(fiber = Fiber.current)
199
199
  @ready << fiber
200
200
 
201
- Fiber.yield
201
+ Task.yield
202
202
  end
203
203
 
204
204
  def finished?
@@ -223,7 +223,7 @@ module Async
223
223
  @running.clear
224
224
  end
225
225
 
226
- unless @blocked.zero?
226
+ if @unblocked.any?
227
227
  unblocked = Array.new
228
228
 
229
229
  @guard.synchronize do
@@ -34,24 +34,20 @@ module Async
34
34
 
35
35
  def initialize(reactor)
36
36
  @reactor = reactor
37
- @wrappers = nil
38
37
  end
39
38
 
39
+ attr :wrappers
40
+
40
41
  def set!
41
- @wrappers = {}
42
42
  Fiber.set_scheduler(self)
43
43
  end
44
44
 
45
45
  def clear!
46
- # Because these instances are created with `autoclose: false`, this does not close the underlying file descriptor:
47
- # @ios&.each_value(&:close)
48
-
49
- @wrappers = nil
50
46
  Fiber.set_scheduler(nil)
51
47
  end
52
48
 
53
49
  private def from_io(io)
54
- @wrappers[io] ||= Wrapper.new(io, @reactor)
50
+ Wrapper.new(io, @reactor)
55
51
  end
56
52
 
57
53
  def io_wait(io, events, timeout = nil)
@@ -82,12 +78,12 @@ module Async
82
78
  # @returns [Process::Status] A process status instance.
83
79
  def process_wait(pid, flags)
84
80
  Thread.new do
85
- Process::Status.wait(pid, flags)
81
+ ::Process::Status.wait(pid, flags)
86
82
  end.value
87
83
  end
88
84
 
89
85
  def kernel_sleep(duration)
90
- @reactor.sleep(duration)
86
+ self.block(nil, duration)
91
87
  end
92
88
 
93
89
  def block(blocker, timeout)
@@ -102,11 +98,13 @@ module Async
102
98
  end
103
99
 
104
100
  def fiber(&block)
105
- task = Task.new(&block)
101
+ task = Task.new(@reactor, &block)
102
+
103
+ fiber = task.fiber
106
104
 
107
- task.resume
105
+ task.run
108
106
 
109
- return task.fiber
107
+ return fiber
110
108
  end
111
109
  end
112
110
  end
data/lib/async/task.rb CHANGED
@@ -72,14 +72,14 @@ module Async
72
72
  # Create a new task.
73
73
  # @param reactor [Async::Reactor] the reactor this task will run within.
74
74
  # @param parent [Async::Task] the parent task.
75
- def initialize(reactor, parent = Task.current?, logger: nil, **options, &block)
75
+ def initialize(reactor, parent = Task.current?, logger: nil, finished: nil, **options, &block)
76
76
  super(parent || reactor, **options)
77
77
 
78
78
  @reactor = reactor
79
79
 
80
80
  @status = :initialized
81
81
  @result = nil
82
- @finished = nil
82
+ @finished = finished
83
83
 
84
84
  @logger = logger
85
85
 
data/lib/async/version.rb CHANGED
@@ -21,5 +21,5 @@
21
21
  # THE SOFTWARE.
22
22
 
23
23
  module Async
24
- VERSION = "1.28.2"
24
+ VERSION = "1.28.7"
25
25
  end
data/lib/kernel/sync.rb CHANGED
@@ -28,7 +28,10 @@ module Kernel
28
28
  if task = ::Async::Task.current?
29
29
  yield task
30
30
  else
31
- ::Async::Reactor.run(&block).wait
31
+ ::Async::Reactor.run(
32
+ finished: ::Async::Condition.new,
33
+ &block
34
+ ).wait
32
35
  end
33
36
  end
34
37
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: async
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.28.2
4
+ version: 1.28.7
5
5
  platform: ruby
6
6
  authors:
7
7
  - Samuel Williams
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-12-25 00:00:00.000000000 Z
11
+ date: 2021-02-09 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: console