async-io 1.30.2 → 1.32.2

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 61a14845c7d079931211e6ac68687686d7be2408f53967980594d13a7e526036
4
- data.tar.gz: 6e6b66368d65a53f0ca0a313aab8a6857821d098c2c7316c8dae8d67329fa1c4
3
+ metadata.gz: f27321bce6882e4ce01cb5682d1c6863d3876a46b87af9813af151acf3a55561
4
+ data.tar.gz: 62870077e15a05631a2fb655025a64afe99d0ff0b815c9a7badb25d4d8af61a9
5
5
  SHA512:
6
- metadata.gz: c49e189437e5c89c011323cbc73c24c799d08e479b85fbf513a96f58b5732262085755750474a048e415a43e703bb78f28100f7a87ac7d506b966357d5d20d6a
7
- data.tar.gz: b65bfd71f89d9659dc5f30464c820df28a13b14294d7e4cb8ef432cd698b19fc09208a57f3ae2206c4c28db61ddbebfd0a334b9de50d0b89b3f28e621949cc63
6
+ metadata.gz: d655cd100a8b02118786b83baf628f0e4021610f8b61a608af88e33a6808bdb295de80261e7fe006f7c75bf3b208d72f9777cf4b0e2e0e926cb90ceac0aa8152
7
+ data.tar.gz: 3ba5e4f6da03ae5456de974a32ca34f1bcf6a16723d31113f2eaa291f66e8811bc9b7db8d02b71b83fef1468b8a3cdfc55534c26bcb6dd5fe209b92be6a4d52f
@@ -116,7 +116,7 @@ module Async
116
116
  end
117
117
 
118
118
  if length
119
- return "" if length <= 0
119
+ return String.new(encoding: Encoding::BINARY) if length <= 0
120
120
 
121
121
  # Fast path:
122
122
  if buffer = self.sysread(length, buffer)
data/lib/async/io/peer.rb CHANGED
@@ -59,13 +59,13 @@ module Async
59
59
  when 0, IPPROTO_TCP
60
60
  self.setsockopt(IPPROTO_TCP, TCP_NODELAY, value ? 1 : 0)
61
61
  else
62
- Async.logger.warn(self) {"Unsure how to sync=#{value} for #{self.protocol}!"}
62
+ Console.logger.warn(self) {"Unsure how to sync=#{value} for #{self.protocol}!"}
63
63
  end
64
64
  rescue Errno::EINVAL
65
65
  # On Darwin, sometimes occurs when the connection is not yet fully formed. Empirically, TCP_NODELAY is enabled despite this result.
66
66
  rescue Errno::EOPNOTSUPP
67
67
  # Some platforms may simply not support the operation.
68
- # Async.logger.warn(self) {"Unable to set sync=#{value}!"}
68
+ # Console.logger.warn(self) {"Unable to set sync=#{value}!"}
69
69
  end
70
70
 
71
71
  def sync
@@ -27,10 +27,10 @@ module Async
27
27
  # Pre-connect and pre-bind sockets so that it can be used between processes.
28
28
  class SharedEndpoint < Endpoint
29
29
  # Create a new `SharedEndpoint` by binding to the given endpoint.
30
- def self.bound(endpoint, backlog = Socket::SOMAXCONN)
30
+ def self.bound(endpoint, backlog: Socket::SOMAXCONN, close_on_exec: false)
31
31
  wrappers = endpoint.bound do |server|
32
32
  server.listen(backlog)
33
- server.close_on_exec = false
33
+ server.close_on_exec = close_on_exec
34
34
  server.reactor = nil
35
35
  end
36
36
 
@@ -38,10 +38,10 @@ module Async
38
38
  end
39
39
 
40
40
  # Create a new `SharedEndpoint` by connecting to the given endpoint.
41
- def self.connected(endpoint)
41
+ def self.connected(endpoint, close_on_exec: false)
42
42
  wrapper = endpoint.connect
43
43
 
44
- wrapper.close_on_exec = false
44
+ wrapper.close_on_exec = close_on_exec
45
45
  wrapper.reactor = nil
46
46
 
47
47
  return self.new(endpoint, [wrapper])
@@ -116,7 +116,7 @@ module Async
116
116
  # @param remote_address [Address] The remote address to connect to.
117
117
  # @option local_address [Address] The local address to bind to before connecting.
118
118
  def self.connect(remote_address, local_address: nil, task: Task.current, **options)
119
- Async.logger.debug(self) {"Connecting to #{remote_address.inspect}"}
119
+ Console.logger.debug(self) {"Connecting to #{remote_address.inspect}"}
120
120
 
121
121
  task.annotate "connecting to #{remote_address.inspect}"
122
122
 
@@ -154,7 +154,7 @@ module Async
154
154
  # @param local_address [Address] The local address to bind to.
155
155
  # @option protocol [Integer] The socket protocol to use.
156
156
  def self.bind(local_address, protocol: 0, task: Task.current, **options, &block)
157
- Async.logger.debug(self) {"Binding to #{local_address.inspect}"}
157
+ Console.logger.debug(self) {"Binding to #{local_address.inspect}"}
158
158
 
159
159
  wrapper = build(local_address.afamily, local_address.socktype, protocol, **options) do |socket|
160
160
  socket.bind(local_address.to_sockaddr)
@@ -68,6 +68,7 @@ module Async
68
68
  super
69
69
  else
70
70
  io = self.class.wrapped_klass.new(socket.to_io, context)
71
+ super(io, socket.reactor)
71
72
 
72
73
  # We detach the socket from the reactor, otherwise it's possible to add the file descriptor to the selector twice, which is bad.
73
74
  socket.reactor = nil
@@ -75,10 +76,7 @@ module Async
75
76
  # This ensures that when the internal IO is closed, it also closes the internal socket:
76
77
  io.sync_close = true
77
78
 
78
- # Copy the timeout:
79
79
  @timeout = socket.timeout
80
-
81
- super(io, socket.reactor)
82
80
  end
83
81
  end
84
82
 
@@ -72,7 +72,7 @@ module Async
72
72
 
73
73
  # Reads `size` bytes from the stream. If size is not specified, read until end of file.
74
74
  def read(size = nil)
75
- return '' if size == 0
75
+ return String.new(encoding: Encoding::BINARY) if size == 0
76
76
 
77
77
  if size
78
78
  until @eof or @read_buffer.bytesize >= size
@@ -93,7 +93,7 @@ module Async
93
93
 
94
94
  # Read at most `size` bytes from the stream. Will avoid reading from the underlying stream if possible.
95
95
  def read_partial(size = nil)
96
- return '' if size == 0
96
+ return String.new(encoding: Encoding::BINARY) if size == 0
97
97
 
98
98
  if !@eof and @read_buffer.empty?
99
99
  fill_read_buffer
@@ -259,13 +259,13 @@ module Async
259
259
 
260
260
  if @read_buffer.empty?
261
261
  if @io.read_nonblock(size, @read_buffer, exception: false)
262
- # Async.logger.debug(self, name: "read") {@read_buffer.inspect}
262
+ # Console.logger.debug(self, name: "read") {@read_buffer.inspect}
263
263
  return true
264
264
  end
265
265
  else
266
266
  if chunk = @io.read_nonblock(size, @input_buffer, exception: false)
267
267
  @read_buffer << chunk
268
- # Async.logger.debug(self, name: "read") {@read_buffer.inspect}
268
+ # Console.logger.debug(self, name: "read") {@read_buffer.inspect}
269
269
 
270
270
  return true
271
271
  end
@@ -40,7 +40,7 @@ module Async
40
40
  # We do this unusual dance to avoid leaking an "open" socket instance.
41
41
  socket = Socket.connect(remote_address, local_address: local_address)
42
42
  fd = socket.fcntl(Fcntl::F_DUPFD)
43
- Async.logger.debug(self) {"Connected to #{remote_address.inspect}: #{fd}"}
43
+ Console.logger.debug(self) {"Connected to #{remote_address.inspect}: #{fd}"}
44
44
  socket.close
45
45
 
46
46
  super(::TCPSocket.for_fd(fd))
@@ -22,6 +22,6 @@
22
22
 
23
23
  module Async
24
24
  module IO
25
- VERSION = "1.30.2"
25
+ VERSION = "1.32.2"
26
26
  end
27
27
  end
metadata CHANGED
@@ -1,29 +1,29 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: async-io
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.30.2
4
+ version: 1.32.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Samuel Williams
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2021-02-09 00:00:00.000000000 Z
11
+ date: 2021-07-16 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: async
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - "~>"
17
+ - - ">="
18
18
  - !ruby/object:Gem::Version
19
- version: '1.14'
19
+ version: '0'
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
- - - "~>"
24
+ - - ">="
25
25
  - !ruby/object:Gem::Version
26
- version: '1.14'
26
+ version: '0'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: async-container
29
29
  requirement: !ruby/object:Gem::Requirement
@@ -53,49 +53,7 @@ dependencies:
53
53
  - !ruby/object:Gem::Version
54
54
  version: '1.10'
55
55
  - !ruby/object:Gem::Dependency
56
- name: bake
57
- requirement: !ruby/object:Gem::Requirement
58
- requirements:
59
- - - ">="
60
- - !ruby/object:Gem::Version
61
- version: '0'
62
- type: :development
63
- prerelease: false
64
- version_requirements: !ruby/object:Gem::Requirement
65
- requirements:
66
- - - ">="
67
- - !ruby/object:Gem::Version
68
- version: '0'
69
- - !ruby/object:Gem::Dependency
70
- name: bake-bundler
71
- requirement: !ruby/object:Gem::Requirement
72
- requirements:
73
- - - ">="
74
- - !ruby/object:Gem::Version
75
- version: '0'
76
- type: :development
77
- prerelease: false
78
- version_requirements: !ruby/object:Gem::Requirement
79
- requirements:
80
- - - ">="
81
- - !ruby/object:Gem::Version
82
- version: '0'
83
- - !ruby/object:Gem::Dependency
84
- name: bake-modernize
85
- requirement: !ruby/object:Gem::Requirement
86
- requirements:
87
- - - ">="
88
- - !ruby/object:Gem::Version
89
- version: '0'
90
- type: :development
91
- prerelease: false
92
- version_requirements: !ruby/object:Gem::Requirement
93
- requirements:
94
- - - ">="
95
- - !ruby/object:Gem::Version
96
- version: '0'
97
- - !ruby/object:Gem::Dependency
98
- name: bundler
56
+ name: covered
99
57
  requirement: !ruby/object:Gem::Requirement
100
58
  requirements:
101
59
  - - ">="
@@ -109,7 +67,7 @@ dependencies:
109
67
  - !ruby/object:Gem::Version
110
68
  version: '0'
111
69
  - !ruby/object:Gem::Dependency
112
- name: covered
70
+ name: rack-test
113
71
  requirement: !ruby/object:Gem::Requirement
114
72
  requirements:
115
73
  - - ">="
@@ -128,14 +86,14 @@ dependencies:
128
86
  requirements:
129
87
  - - "~>"
130
88
  - !ruby/object:Gem::Version
131
- version: '3.0'
89
+ version: '3.6'
132
90
  type: :development
133
91
  prerelease: false
134
92
  version_requirements: !ruby/object:Gem::Requirement
135
93
  requirements:
136
94
  - - "~>"
137
95
  - !ruby/object:Gem::Version
138
- version: '3.0'
96
+ version: '3.6'
139
97
  description:
140
98
  email:
141
99
  executables: []
@@ -189,7 +147,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
189
147
  - !ruby/object:Gem::Version
190
148
  version: '0'
191
149
  requirements: []
192
- rubygems_version: 3.2.3
150
+ rubygems_version: 3.2.22
193
151
  signing_key:
194
152
  specification_version: 4
195
153
  summary: Provides support for asynchonous TCP, UDP, UNIX and SSL sockets.