io-stream 0.4.1 → 0.4.2
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/io/stream/buffered.rb +1 -1
- data/lib/io/stream/generic.rb +29 -21
- data/lib/io/stream/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: fe1cb88a44b5750ca8841631a3031da7ff06004e21d5dccf319012f0a0f1151f
|
4
|
+
data.tar.gz: 30d66da77b2887c16024511e907a8b30fdf1b24c53ee548f3a9171b54ff45ee1
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: e2ad4475b779c7c421fb7143fac491243790e210c12dac89d37e885753353c78d1305bd08144e12204a13d4c068c7cf16a9133462fe0a5f19a5eecd49e839fc7
|
7
|
+
data.tar.gz: edef464bbf54fdfd662850aca4b7fcc522caca32566a2201b2ee8c68460c5eff9ae67d5e645e255b2e60ba951b88d10703648393e65c4f1b58f12ccffc8cd6cb
|
checksums.yaml.gz.sig
CHANGED
Binary file
|
data/lib/io/stream/buffered.rb
CHANGED
data/lib/io/stream/generic.rb
CHANGED
@@ -29,7 +29,6 @@ module IO::Stream
|
|
29
29
|
|
30
30
|
@read_buffer = StringBuffer.new
|
31
31
|
@write_buffer = StringBuffer.new
|
32
|
-
@drain_buffer = StringBuffer.new
|
33
32
|
|
34
33
|
# Used as destination buffer for underlying reads.
|
35
34
|
@input_buffer = StringBuffer.new
|
@@ -129,20 +128,21 @@ module IO::Stream
|
|
129
128
|
read_until(separator, **options)
|
130
129
|
end
|
131
130
|
|
131
|
+
private def drain(buffer)
|
132
|
+
begin
|
133
|
+
syswrite(buffer)
|
134
|
+
ensure
|
135
|
+
# If the write operation fails, we still need to clear this buffer, and the data is essentially lost.
|
136
|
+
buffer.clear
|
137
|
+
end
|
138
|
+
end
|
139
|
+
|
132
140
|
# Flushes buffered data to the stream.
|
133
141
|
def flush
|
134
142
|
return if @write_buffer.empty?
|
135
143
|
|
136
144
|
@writing.synchronize do
|
137
|
-
|
138
|
-
@write_buffer, @drain_buffer = @drain_buffer, @write_buffer
|
139
|
-
|
140
|
-
begin
|
141
|
-
syswrite(@drain_buffer)
|
142
|
-
ensure
|
143
|
-
# If the write operation fails, we still need to clear this buffer, and the data is essentially lost.
|
144
|
-
@drain_buffer.clear
|
145
|
-
end
|
145
|
+
self.drain(@write_buffer)
|
146
146
|
end
|
147
147
|
end
|
148
148
|
|
@@ -150,11 +150,15 @@ module IO::Stream
|
|
150
150
|
# buffer is flushed to the underlying `io`.
|
151
151
|
# @param string the string to write to the buffer.
|
152
152
|
# @return the number of bytes appended to the buffer.
|
153
|
-
def write(string)
|
154
|
-
@
|
155
|
-
|
156
|
-
|
157
|
-
flush
|
153
|
+
def write(string, flush: false)
|
154
|
+
@writing.synchronize do
|
155
|
+
@write_buffer << string
|
156
|
+
|
157
|
+
flush |= @write_buffer.bytesize >= @block_size
|
158
|
+
|
159
|
+
if flush
|
160
|
+
self.drain(@write_buffer)
|
161
|
+
end
|
158
162
|
end
|
159
163
|
|
160
164
|
return string.bytesize
|
@@ -168,11 +172,15 @@ module IO::Stream
|
|
168
172
|
end
|
169
173
|
|
170
174
|
def puts(*arguments, separator: $/)
|
171
|
-
arguments.
|
172
|
-
@write_buffer << argument << separator
|
173
|
-
end
|
175
|
+
return if arguments.empty?
|
174
176
|
|
175
|
-
|
177
|
+
@writing.synchronize do
|
178
|
+
arguments.each do |argument|
|
179
|
+
@write_buffer << argument << separator
|
180
|
+
end
|
181
|
+
|
182
|
+
self.drain(@write_buffer)
|
183
|
+
end
|
176
184
|
end
|
177
185
|
|
178
186
|
def closed?
|
@@ -266,13 +274,13 @@ module IO::Stream
|
|
266
274
|
|
267
275
|
if @read_buffer.empty?
|
268
276
|
if sysread(size, @read_buffer)
|
269
|
-
# Console.
|
277
|
+
# Console.info(self, name: "read") {@read_buffer.inspect}
|
270
278
|
return true
|
271
279
|
end
|
272
280
|
else
|
273
281
|
if chunk = sysread(size, @input_buffer)
|
274
282
|
@read_buffer << chunk
|
275
|
-
# Console.
|
283
|
+
# Console.info(self, name: "read") {@read_buffer.inspect}
|
276
284
|
|
277
285
|
return true
|
278
286
|
end
|
data/lib/io/stream/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: io-stream
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.4.
|
4
|
+
version: 0.4.2
|
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-
|
40
|
+
date: 2024-10-01 00:00:00.000000000 Z
|
41
41
|
dependencies: []
|
42
42
|
description:
|
43
43
|
email:
|
metadata.gz.sig
CHANGED
Binary file
|