io-stream 0.1.0 → 0.2.0

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: 15a89f071ddff7b47577a25a20195cb1d246f9b7105af8ee605ae01e0d267923
4
- data.tar.gz: c29039d3ab0d1e234733ddf38f1ddc4be40cbffa92b5f9b47ba1dc247e9ea357
3
+ metadata.gz: 98127286e0bfcfd823b663adec90587de5148f282cdad684a684c5eb2a057595
4
+ data.tar.gz: 41e3f054780a65fdf41f83996281a1f2720712a55ba1582939a60beeb7101303
5
5
  SHA512:
6
- metadata.gz: 90d91151a245677dd5e7b96c2942af1b85f16d2a59c64c981e0d3d256d4af0ce5cc81115bfeb3a1981f765695e4777a0e76caf9c8f3d8995bbba204ebce8d91e
7
- data.tar.gz: e40408fa7e69bab982229290640cb0e9c7a4efb9bc39ac40003ef1fe698f1aac962cd10a7464b5b2643bf46dddf6697e26296209527d507a0d135f112bc4bbae
6
+ metadata.gz: 4144ccb9ff5d96ef0d8f7aa56bce33d92333809ce827d860f5b8e604cede4751674a070a4ac0df97dee348ab039f5aa1b25bf4f8f3c723809dd4fe7281bd44e4
7
+ data.tar.gz: 59de415924836ae327e5c3089f1b458ef46bc4152b4c97b54f55998a3075035608c68ff2cc30414ed2458c36537a1c0a0b3c6c8833a1eb448550da7ce00f29bf
checksums.yaml.gz.sig CHANGED
Binary file
@@ -22,6 +22,8 @@ module IO::Stream
22
22
  def self.wrap(io, **options)
23
23
  if io.respond_to?(:buffered=)
24
24
  io.buffered = false
25
+ else
26
+ io.sync = true
25
27
  end
26
28
 
27
29
  stream = self.new(io, **options)
@@ -68,7 +70,25 @@ module IO::Stream
68
70
  end
69
71
 
70
72
  def syswrite(buffer)
71
- @io.write(buffer)
73
+ # This fails due to re-entrancy issues with a concurrent call to `sysclose`.
74
+ # return @io.write(buffer)
75
+
76
+ while true
77
+ result = @io.write_nonblock(buffer, exception: false)
78
+
79
+ case result
80
+ when :wait_readable
81
+ @io.wait_readable
82
+ when :wait_writable
83
+ @io.wait_writable
84
+ else
85
+ if result == buffer.bytesize
86
+ return
87
+ else
88
+ buffer = buffer.byteslice(result, buffer.bytesize)
89
+ end
90
+ end
91
+ end
72
92
  end
73
93
 
74
94
  # Reads data from the underlying stream as efficiently as possible.
@@ -4,5 +4,5 @@
4
4
  # Copyright, 2023-2024, by Samuel Williams.
5
5
 
6
6
  module IO::Stream
7
- VERSION = "0.1.0"
7
+ VERSION = "0.2.0"
8
8
  end
data.tar.gz.sig CHANGED
Binary file
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: io-stream
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Samuel Williams
@@ -37,7 +37,7 @@ cert_chain:
37
37
  Q2K9NVun/S785AP05vKkXZEFYxqG6EW012U4oLcFl5MySFajYXRYbuUpH6AY+HP8
38
38
  voD0MPg1DssDLKwXyt1eKD/+Fq0bFWhwVM/1XiAXL7lyYUyOq24KHgQ2Csg=
39
39
  -----END CERTIFICATE-----
40
- date: 2024-04-22 00:00:00.000000000 Z
40
+ date: 2024-04-23 00:00:00.000000000 Z
41
41
  dependencies: []
42
42
  description:
43
43
  email:
metadata.gz.sig CHANGED
Binary file