async-io 1.27.4 → 1.27.5

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: 1e76a27a7d97a50224dc36059306cd3bc34d8fdb644073dcfc7c051e08a1f86c
4
- data.tar.gz: 581ca97d25191eda6b917de86ef60a0693cb25d45959ed16be7615b573e5e77d
3
+ metadata.gz: 2aa645f59a002756ee40be3c903917fb8010d91d61f1984a863481cab364644c
4
+ data.tar.gz: 8e4fc966f387cb76a7635923d4f3803a2cd91354ddf63fc4618431c97c1c89e9
5
5
  SHA512:
6
- metadata.gz: 9179c425cd342658b807b3732eec8a7102c638537f785a261de5a60dc983b149a8811f1afa5be854fed3eecc1c52f6311e7126bfc201473fe10de54ee6ae7d59
7
- data.tar.gz: '06295795fe52e470cda216cda6a7e0f66c27dce7f746573f1eca7d509c71856f5208ce6fd544b4c821cff9f605e391e129b55ab65a3dace590a8ed5c93143506'
6
+ metadata.gz: 297100087ebdf7a49a147b3b29f7e1b1c9cceffcf8c2a68857bb12cf10dfde34e83e5f18c53a1060f2833bb630b17ba72f5532bbd3453e953d5362c30d4eaf2c
7
+ data.tar.gz: 0dfb45ca2d1134185511c44a91bf2c02e8ded1cb7e31fc10cb71ac2de93444aa45a5dd44a5edb94f224a1b2800c1d63818ae23803a0607137de5a810486fa878
@@ -105,6 +105,8 @@ module Async
105
105
  # data = io.sysread(512)
106
106
  wrap_blocking_method :sysread, :read_nonblock
107
107
 
108
+ alias readpartial read_nonblock
109
+
108
110
  # Read `length` bytes of data from the underlying I/O. If length is unspecified, read everything.
109
111
  def read(length = nil, buffer = nil)
110
112
  if buffer
@@ -149,8 +151,6 @@ module Async
149
151
  # io.syswrite("Hello World")
150
152
  wrap_blocking_method :syswrite, :write_nonblock
151
153
 
152
- alias readpartial read_nonblock
153
-
154
154
  def write(buffer)
155
155
  # Fast path:
156
156
  written = self.syswrite(buffer)
@@ -211,9 +211,9 @@ module Async
211
211
 
212
212
  protected
213
213
 
214
- def async_send(*args, timeout: self.timeout)
214
+ def async_send(*arguments, timeout: self.timeout)
215
215
  while true
216
- result = @io.__send__(*args, exception: false)
216
+ result = @io.__send__(*arguments, exception: false)
217
217
 
218
218
  case result
219
219
  when :wait_readable
@@ -43,6 +43,14 @@ module Async
43
43
  return false
44
44
  end
45
45
 
46
+ def eof
47
+ !connected?
48
+ end
49
+
50
+ def eof?
51
+ !connected?
52
+ end
53
+
46
54
  # Best effort to set *_NODELAY if it makes sense. Swallows errors where possible.
47
55
  def sync=(value)
48
56
  super
@@ -223,13 +223,13 @@ module Async
223
223
 
224
224
  # Returns true if the stream is at file which means there is no more data to be read.
225
225
  def eof?
226
- return false unless @read_buffer.empty?
227
-
228
- if !@eof
229
- fill_read_buffer
226
+ if !@read_buffer.empty?
227
+ return false
228
+ elsif @eof
229
+ return true
230
+ else
231
+ return @io.eof?
230
232
  end
231
-
232
- return @eof
233
233
  end
234
234
 
235
235
  alias eof eof?
@@ -22,6 +22,6 @@
22
22
 
23
23
  module Async
24
24
  module IO
25
- VERSION = "1.27.4"
25
+ VERSION = "1.27.5"
26
26
  end
27
27
  end
@@ -163,7 +163,7 @@ RSpec.describe Async::IO::Stream do
163
163
  io.write "Hello World"
164
164
  io.seek(0)
165
165
 
166
- expect(subject.io).to receive(:read_nonblock).and_call_original.twice
166
+ expect(subject.io).to receive(:read_nonblock).and_call_original.once
167
167
 
168
168
  expect(subject.read_partial(4)).to be == "Hell"
169
169
  expect(subject).to_not be_eof
@@ -21,6 +21,7 @@
21
21
  # THE SOFTWARE.
22
22
 
23
23
  require 'async/io/unix_endpoint'
24
+ require 'async/io/stream'
24
25
 
25
26
  RSpec.describe Async::IO::UNIXEndpoint do
26
27
  include_context Async::RSpec::Reactor
@@ -77,4 +78,29 @@ RSpec.describe Async::IO::UNIXEndpoint do
77
78
 
78
79
  server_task.stop
79
80
  end
81
+
82
+ context "using buffered stream" do
83
+ it "can use stream to read and write data" do
84
+ server_task = reactor.async do |task|
85
+ subject.accept do |peer|
86
+ stream = Async::IO::Stream.new(peer)
87
+ stream.write(stream.read)
88
+ stream.close
89
+ end
90
+ end
91
+
92
+ reactor.async do
93
+ subject.connect do |client|
94
+ stream = Async::IO::Stream.new(client)
95
+
96
+ stream.write(data)
97
+ stream.close_write
98
+
99
+ expect(stream.read).to be == data
100
+ end
101
+ end.wait
102
+
103
+ server_task.stop
104
+ end
105
+ end
80
106
  end
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.27.4
4
+ version: 1.27.5
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-16 00:00:00.000000000 Z
11
+ date: 2020-03-21 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: async