io-stream 0.4.1 → 0.4.3
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 +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/openssl.rb +12 -0
- 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: 6e86dd2d0db65582e6b9655493776e1f3fa16c8d22af92d40c7c2f1ae374c7ee
|
4
|
+
data.tar.gz: e6299a23d03c263361f04bae8ec29c3d0b70c2f19d6cdfe64ff601d6b7bb7c64
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 16d2aff35b208b029c2b917cd6a423d5ee54547939a39e5575f2641d8060b793a03a5a0903a885216142d99369ba80f8941d35ab07739a11c95d2c98dfa1d3cd
|
7
|
+
data.tar.gz: af90134348a217f72fe90dea4cab0c2c4e7fc6b7a2c27345b865642191c9aa0bdda16b2e1856114d1e42bbf7f9c6be7bb506daa8cb9724baae2fdf1534dcc85e
|
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/openssl.rb
CHANGED
@@ -43,6 +43,18 @@ module OpenSSL
|
|
43
43
|
to_io.timeout = value
|
44
44
|
end
|
45
45
|
end
|
46
|
+
|
47
|
+
unless method_defined?(:buffered?)
|
48
|
+
def buffered?
|
49
|
+
return to_io.buffered?
|
50
|
+
end
|
51
|
+
end
|
52
|
+
|
53
|
+
unless method_defined?(:buffered=)
|
54
|
+
def buffered=(value)
|
55
|
+
to_io.buffered = value
|
56
|
+
end
|
57
|
+
end
|
46
58
|
end
|
47
59
|
end
|
48
60
|
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.3
|
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-02 00:00:00.000000000 Z
|
41
41
|
dependencies: []
|
42
42
|
description:
|
43
43
|
email:
|
metadata.gz.sig
CHANGED
Binary file
|