async-io 1.27.7 → 1.28.0
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 +4 -4
- data/.travis.yml +2 -1
- data/Gemfile +0 -7
- data/async-io.gemspec +2 -2
- data/lib/async/io/stream.rb +16 -45
- data/lib/async/io/version.rb +1 -1
- data/spec/async/io/shared_endpoint_spec.rb +0 -2
- data/spec/async/io/stream_spec.rb +1 -1
- metadata +8 -8
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: d3efc5254f6ca150d428d1a13eeaf36775c9a7f0fe3f3859069eb30db4d6b907
|
4
|
+
data.tar.gz: 287aa5c3bd8e31304a3d60a7f278bd48307224aa457b67ec766d9c160731a37c
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: e8be3b2eb8024ebcea499eafe4845415684ab56a7a952141ef4cccb0e91fb7cde2f439734cb4a126051e9de3f349eb15ee59e65f55292d8705cd900c6ebfca4e
|
7
|
+
data.tar.gz: 9b46e1c7eb93a45e72cd5b0698b57213f31b4f8fc23c546f0bf887fd1e0cc17c9978fa03adb52f58cffb8a4b53df87bb16a514d02b676d7913102e57bac11df8
|
data/.travis.yml
CHANGED
data/Gemfile
CHANGED
@@ -5,13 +5,6 @@ source 'https://rubygems.org'
|
|
5
5
|
# Specify your gem's dependencies in async-io.gemspec
|
6
6
|
gemspec
|
7
7
|
|
8
|
-
group :development do
|
9
|
-
gem 'pry'
|
10
|
-
gem 'guard-rspec'
|
11
|
-
|
12
|
-
gem 'bake-bundler'
|
13
|
-
end
|
14
|
-
|
15
8
|
group :test do
|
16
9
|
gem 'benchmark-ips'
|
17
10
|
gem 'ruby-prof', platforms: :mri
|
data/async-io.gemspec
CHANGED
@@ -19,12 +19,12 @@ Gem::Specification.new do |spec|
|
|
19
19
|
spec.add_dependency "async", "~> 1.14"
|
20
20
|
spec.add_development_dependency "async-rspec", "~> 1.10"
|
21
21
|
|
22
|
-
spec.required_ruby_version = '~> 2.
|
22
|
+
spec.required_ruby_version = '~> 2.5'
|
23
23
|
|
24
24
|
spec.add_development_dependency "async-container", "~> 0.15"
|
25
25
|
|
26
26
|
spec.add_development_dependency "covered"
|
27
27
|
spec.add_development_dependency "bundler"
|
28
|
-
spec.add_development_dependency "
|
28
|
+
spec.add_development_dependency "bake-bundler"
|
29
29
|
spec.add_development_dependency "rspec", "~> 3.0"
|
30
30
|
end
|
data/lib/async/io/stream.rb
CHANGED
@@ -46,8 +46,9 @@ module Async
|
|
46
46
|
@io = io
|
47
47
|
@eof = false
|
48
48
|
|
49
|
-
@deferred = deferred
|
50
49
|
@pending = 0
|
50
|
+
# This field is ignored, but used to mean, try to buffer packets in a single iteration of the reactor.
|
51
|
+
# @deferred = deferred
|
51
52
|
|
52
53
|
@writing = Async::Semaphore.new(1)
|
53
54
|
|
@@ -148,23 +149,19 @@ module Async
|
|
148
149
|
end
|
149
150
|
|
150
151
|
# Flushes buffered data to the stream.
|
151
|
-
def flush
|
152
|
-
if
|
153
|
-
|
154
|
-
|
152
|
+
def flush
|
153
|
+
return if @write_buffer.empty?
|
154
|
+
|
155
|
+
@writing.acquire do
|
156
|
+
# Flip the write buffer and drain buffer:
|
157
|
+
@write_buffer, @drain_buffer = @drain_buffer, @write_buffer
|
155
158
|
|
156
|
-
|
157
|
-
|
158
|
-
|
159
|
-
|
160
|
-
|
161
|
-
ensure
|
162
|
-
# The write buffer no longer contains pending writes
|
163
|
-
@pending = 0
|
164
|
-
end
|
159
|
+
begin
|
160
|
+
@io.write(@drain_buffer)
|
161
|
+
ensure
|
162
|
+
# If the write operation fails, we still need to clear this buffer, and the data is essentially lost.
|
163
|
+
@drain_buffer.clear
|
165
164
|
end
|
166
|
-
else
|
167
|
-
drain_write_buffer unless @write_buffer.empty?
|
168
165
|
end
|
169
166
|
end
|
170
167
|
|
@@ -210,7 +207,7 @@ module Async
|
|
210
207
|
end
|
211
208
|
|
212
209
|
def close_write
|
213
|
-
|
210
|
+
flush
|
214
211
|
ensure
|
215
212
|
@io.close_write
|
216
213
|
end
|
@@ -220,7 +217,7 @@ module Async
|
|
220
217
|
return if @io.closed?
|
221
218
|
|
222
219
|
begin
|
223
|
-
|
220
|
+
flush
|
224
221
|
rescue
|
225
222
|
# We really can't do anything here unless we want #close to raise exceptions.
|
226
223
|
ensure
|
@@ -250,32 +247,6 @@ module Async
|
|
250
247
|
|
251
248
|
private
|
252
249
|
|
253
|
-
# For efficiency purposes, only call this method when the write buffer is not empty.
|
254
|
-
def drain_write_buffer
|
255
|
-
@writing.acquire do
|
256
|
-
Async.logger.debug(self) do |buffer|
|
257
|
-
if @pending > 0
|
258
|
-
buffer.puts "Draining #{@pending} writes (#{@write_buffer.bytesize} bytes)..."
|
259
|
-
else
|
260
|
-
buffer.puts "Draining immediate write (#{@write_buffer.bytesize} bytes)..."
|
261
|
-
end
|
262
|
-
|
263
|
-
# buffer.puts "@write_buffer = #{@write_buffer.inspect}"
|
264
|
-
# buffer.puts "@drain_buffer = #{@drain_buffer.inspect}"
|
265
|
-
end
|
266
|
-
|
267
|
-
# Flip the write buffer and drain buffer:
|
268
|
-
@write_buffer, @drain_buffer = @drain_buffer, @write_buffer
|
269
|
-
|
270
|
-
begin
|
271
|
-
@io.write(@drain_buffer)
|
272
|
-
ensure
|
273
|
-
# If the write operation fails, we still need to clear this buffer, and the data is essentially lost.
|
274
|
-
@drain_buffer.clear
|
275
|
-
end
|
276
|
-
end
|
277
|
-
end
|
278
|
-
|
279
250
|
# Fills the buffer from the underlying stream.
|
280
251
|
def fill_read_buffer(size = @block_size)
|
281
252
|
# We impose a limit because the underlying `read` system call can fail if we request too much data in one go.
|
@@ -284,7 +255,7 @@ module Async
|
|
284
255
|
end
|
285
256
|
|
286
257
|
# This effectively ties the input and output stream together.
|
287
|
-
|
258
|
+
flush
|
288
259
|
|
289
260
|
if @read_buffer.empty?
|
290
261
|
if @io.read_nonblock(size, @read_buffer, exception: false)
|
data/lib/async/io/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: async-io
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.28.0
|
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-03-
|
11
|
+
date: 2020-03-31 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: async
|
@@ -81,19 +81,19 @@ dependencies:
|
|
81
81
|
- !ruby/object:Gem::Version
|
82
82
|
version: '0'
|
83
83
|
- !ruby/object:Gem::Dependency
|
84
|
-
name:
|
84
|
+
name: bake-bundler
|
85
85
|
requirement: !ruby/object:Gem::Requirement
|
86
86
|
requirements:
|
87
|
-
- - "
|
87
|
+
- - ">="
|
88
88
|
- !ruby/object:Gem::Version
|
89
|
-
version: '
|
89
|
+
version: '0'
|
90
90
|
type: :development
|
91
91
|
prerelease: false
|
92
92
|
version_requirements: !ruby/object:Gem::Requirement
|
93
93
|
requirements:
|
94
|
-
- - "
|
94
|
+
- - ">="
|
95
95
|
- !ruby/object:Gem::Version
|
96
|
-
version: '
|
96
|
+
version: '0'
|
97
97
|
- !ruby/object:Gem::Dependency
|
98
98
|
name: rspec
|
99
99
|
requirement: !ruby/object:Gem::Requirement
|
@@ -204,7 +204,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
204
204
|
requirements:
|
205
205
|
- - "~>"
|
206
206
|
- !ruby/object:Gem::Version
|
207
|
-
version: '2.
|
207
|
+
version: '2.5'
|
208
208
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
209
209
|
requirements:
|
210
210
|
- - ">="
|