async-io 1.42.1 → 1.43.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- checksums.yaml.gz.sig +0 -0
- data/lib/async/io/generic.rb +4 -0
- data/lib/async/io/ssl_socket.rb +11 -5
- data/lib/async/io/stream.rb +21 -2
- data/lib/async/io/version.rb +1 -1
- data.tar.gz.sig +0 -0
- metadata +2 -2
- metadata.gz.sig +0 -0
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 8db90e6cc1c2b481dfb0079c3ed3e53f917a0f06dbe24443205edc841eec1885
|
4
|
+
data.tar.gz: f6fde3693fc8e90f47a2f0504f865aada739728ee7e21318b85c2662b019165a
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: dfb1bff95d38c1e76661c492df2bcd1f2c37c01744db5ea48cc3d0251c0b6ee70a42af22298cfd0d0d72a12f5f00e40ff9311da0bf9d3f8f42cad0cdfd6b3078
|
7
|
+
data.tar.gz: 6038f1b045ad5744cb12ac94bbc6ae50b1c4cecd0ae1d6cc4a761dd7ead2396bd488e88d270e6d8ae8bbd0869584e63f9fc2830778f5477609a2d2d1ef5e144e
|
checksums.yaml.gz.sig
CHANGED
Binary file
|
data/lib/async/io/generic.rb
CHANGED
data/lib/async/io/ssl_socket.rb
CHANGED
@@ -51,15 +51,21 @@ module Async
|
|
51
51
|
super
|
52
52
|
else
|
53
53
|
io = self.class.wrapped_klass.new(socket.to_io, context)
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
54
|
+
if socket.respond_to?(:reactor)
|
55
|
+
super(io, socket.reactor)
|
56
|
+
|
57
|
+
# We detach the socket from the reactor, otherwise it's possible to add the file descriptor to the selector twice, which is bad.
|
58
|
+
socket.reactor = nil
|
59
|
+
else
|
60
|
+
super(io)
|
61
|
+
end
|
58
62
|
|
59
63
|
# This ensures that when the internal IO is closed, it also closes the internal socket:
|
60
64
|
io.sync_close = true
|
61
65
|
|
62
|
-
|
66
|
+
if socket.respond_to?(:timeout)
|
67
|
+
@timeout = socket.timeout
|
68
|
+
end
|
63
69
|
end
|
64
70
|
end
|
65
71
|
|
data/lib/async/io/stream.rb
CHANGED
@@ -197,6 +197,10 @@ module Async
|
|
197
197
|
@io.connected?
|
198
198
|
end
|
199
199
|
|
200
|
+
def readable?
|
201
|
+
@io.readable?
|
202
|
+
end
|
203
|
+
|
200
204
|
def closed?
|
201
205
|
@io.closed?
|
202
206
|
end
|
@@ -246,6 +250,21 @@ module Async
|
|
246
250
|
|
247
251
|
private
|
248
252
|
|
253
|
+
def sysread(size, buffer)
|
254
|
+
while true
|
255
|
+
result = @io.read_nonblock(size, buffer, exception: false)
|
256
|
+
|
257
|
+
case result
|
258
|
+
when :wait_readable
|
259
|
+
@io.wait_readable
|
260
|
+
when :wait_writable
|
261
|
+
@io.wait_writable
|
262
|
+
else
|
263
|
+
return result
|
264
|
+
end
|
265
|
+
end
|
266
|
+
end
|
267
|
+
|
249
268
|
# Fills the buffer from the underlying stream.
|
250
269
|
def fill_read_buffer(size = @block_size)
|
251
270
|
# We impose a limit because the underlying `read` system call can fail if we request too much data in one go.
|
@@ -257,12 +276,12 @@ module Async
|
|
257
276
|
flush
|
258
277
|
|
259
278
|
if @read_buffer.empty?
|
260
|
-
if
|
279
|
+
if sysread(size, @read_buffer)
|
261
280
|
# Console.logger.debug(self, name: "read") {@read_buffer.inspect}
|
262
281
|
return true
|
263
282
|
end
|
264
283
|
else
|
265
|
-
if chunk =
|
284
|
+
if chunk = sysread(size, @input_buffer)
|
266
285
|
@read_buffer << chunk
|
267
286
|
# Console.logger.debug(self, name: "read") {@read_buffer.inspect}
|
268
287
|
|
data/lib/async/io/version.rb
CHANGED
data.tar.gz.sig
CHANGED
Binary file
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: async-io
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.43.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Samuel Williams
|
@@ -49,7 +49,7 @@ cert_chain:
|
|
49
49
|
Q2K9NVun/S785AP05vKkXZEFYxqG6EW012U4oLcFl5MySFajYXRYbuUpH6AY+HP8
|
50
50
|
voD0MPg1DssDLKwXyt1eKD/+Fq0bFWhwVM/1XiAXL7lyYUyOq24KHgQ2Csg=
|
51
51
|
-----END CERTIFICATE-----
|
52
|
-
date: 2024-04-
|
52
|
+
date: 2024-04-23 00:00:00.000000000 Z
|
53
53
|
dependencies:
|
54
54
|
- !ruby/object:Gem::Dependency
|
55
55
|
name: async
|
metadata.gz.sig
CHANGED
Binary file
|