async-io 1.27.7 → 1.28.0
Sign up to get free protection for your applications and to get access to all the features.
- 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
|
- - ">="
|