Skip to content

Commit 250e852

Browse files
authored
Change mode from idle to read when eof is called (#31)
1 parent 37fe33e commit 250e852

File tree

2 files changed

+14
-3
lines changed

2 files changed

+14
-3
lines changed

src/stream.jl

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -159,8 +159,8 @@ end
159159
function Base.eof(stream::TranscodingStream)
160160
mode = stream.state.mode
161161
if mode == :idle
162-
# FIXME: This is not true when empty data are compressed.
163-
return eof(stream.stream)
162+
changemode!(stream, :read)
163+
return eof(stream)
164164
elseif mode == :read
165165
return buffersize(stream.state.buffer1) == 0 && fillbuffer(stream) == 0
166166
elseif mode == :write
@@ -376,6 +376,12 @@ end
376376
# Write Functions
377377
# ---------------
378378

379+
# Write nothing.
380+
function Base.write(stream::TranscodingStream)
381+
changemode!(stream, :write)
382+
return 0
383+
end
384+
379385
function Base.write(stream::TranscodingStream, b::UInt8)
380386
changemode!(stream, :write)
381387
if marginsize(stream.state.buffer1) == 0 && flushbuffer(stream) == 0

test/runtests.jl

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -232,6 +232,12 @@ end
232232
@test TranscodingStreams.stats(stream).out === Int64(6)
233233
close(stream)
234234

235+
stream = TranscodingStream(Noop(), IOBuffer())
236+
@test stream.state.mode == :idle
237+
@test write(stream) == 0
238+
@test stream.state.mode == :write
239+
close(stream)
240+
235241
stream = NoopStream(IOBuffer("foobar"))
236242
@test nb_available(stream) === 0
237243
@test readavailable(stream) == b""
@@ -313,7 +319,6 @@ end
313319
close(stream)
314320

315321
stream = NoopStream(IOBuffer(""))
316-
@test eof(stream) # idle
317322
unsafe_write(stream, C_NULL, 0)
318323
@test eof(stream) # write
319324
close(stream)

0 commit comments

Comments
 (0)