The BoundedStreams
package describe a defined area in a source stream, which is defined
by an offset in the source stream and a length.
The BoundedStream
objects may be understood as views to a section of their source streams.
All feasible access to stream (interface IO
) is supported.
The public API of BoundedStreams
includes the structure:
BoundedInputStream <: IO
— defines an bounded input stream in its initial stateBoundedOutputStream <: IO
— defines an bounded output stream in its initial state
and corresponding construcors. All access is via the IO
functions (read
/write
,
skip
, seek
, mark
, reset
, isreadable
, iswritable
, eof
,
close
, position
, bytesavailable
). They may be wrapped in other wrapping streams
as well. Some functions may be restricted due to backing the source stream.
BoundedInputStream(source::IO, nbytes::Integer; offset=0, close=nbytes)
BoundedOutputStream(source::IO, nbytes::Integer; offset=0, close=nbytes)
Provide the IO
interface for reading/writing the source stream source
. Restrict the
number of bytes to to nbytes
.
The optional integer argument offset
shifts the starting point off the
current position of the source stream.
The optional argument close
determines the position of the source stream after
this stream is closed. The special value BoundedStreams.CLOSE
closes
the source stream in this case.
]add BoundedStreams
using BoundedStreams
sourceio = open("filename.tar")
io = BoundedInputStream(sourceio, 1000, offset=512)
x = read(read(io, 10))
skip(io, 100)
y = read(io)
...