Documentation
¶
Overview ¶
Package siegreader implements multiple independent Readers (and ReverseReaders) from a single Buffer.
Example:
buffers := siegreader.New() buffer, err := buffers.Get(io.Reader) if err != nil { log.Fatal(err) } rdr := siegreader.ReaderFrom(buffer) second_rdr := siegreader.ReaderFrom(buffer) brdr := siegreader.LimitReaderFrom(buffer, -1) rrdr, err := siegreader.LimitReverseReaderFrom(buffer, 16000) i, err := rdr.Read(slc) i2, err := second_rdr.Read(slc2) i3, err := rrdr.ReadByte()
Index ¶
- Variables
- func LimitReaderFrom(b *Buffer, l int) io.ByteReader
- func LimitReverseReaderFrom(b *Buffer, l int) io.ByteReader
- func TextReaderFrom(b *Buffer) io.ByteReader
- func TextReverseReaderFrom(b *Buffer) io.ByteReader
- type Buffer
- type Buffers
- type LimitReader
- type LimitReverseReader
- type Reader
- type ReverseReader
Constants ¶
This section is empty.
Variables ¶
Functions ¶
func LimitReaderFrom ¶
func LimitReaderFrom(b *Buffer, l int) io.ByteReader
LimitReaderFrom returns a new LimitReader reading from Buffer.
func LimitReverseReaderFrom ¶
func LimitReverseReaderFrom(b *Buffer, l int) io.ByteReader
LimitReverseReaderFrom returns a new LimitReverseReader reading from Buffer.
func TextReaderFrom ¶
func TextReaderFrom(b *Buffer) io.ByteReader
func TextReverseReaderFrom ¶
func TextReverseReaderFrom(b *Buffer) io.ByteReader
Types ¶
type Buffer ¶
type Buffer struct { Quit chan struct{} // when this channel is closed, readers will return io.EOF // contains filtered or unexported fields }
Buffer allows multiple readers to read from the same source. Readers include reverse (from EOF) and limit readers.
func (*Buffer) Bytes ¶
Bytes returns a byte slice for a full read of the buffered file or stream. Returns nil on error
func (*Buffer) Text ¶
func (b *Buffer) Text() characterize.CharType
Text returns the CharType of the first 4096 bytes of the Buffer.
type Buffers ¶
type Buffers struct {
// contains filtered or unexported fields
}
Buffers is a combined pool of stream, external and file buffers
func (*Buffers) Get ¶
Get returns a Buffer reading from the provided io.Reader. Get returns a Buffer backed by a stream, external or file source buffer depending on the type of reader. Source buffers are re-cycled where possible.
type LimitReader ¶
type LimitReader struct { *Reader // contains filtered or unexported fields }
LimitReader allows you to set an early limit for the ByteReader. At limit, ReadByte() returns 0, io.EOF.
func (*LimitReader) ReadByte ¶
func (l *LimitReader) ReadByte() (byte, error)
ReadByte implements the io.ByteReader interface. Once limit is reached, returns 0, io.EOF.
type LimitReverseReader ¶
type LimitReverseReader struct { *ReverseReader // contains filtered or unexported fields }
LimitReverseReader allows you to set an early limit for the ByteReader. At limit, REadByte() returns 0, io.EOF.
func (*LimitReverseReader) ReadByte ¶
func (r *LimitReverseReader) ReadByte() (byte, error)
ReadByte implements the io.ByteReader interface. Once limit is reached, returns 0, io.EOF.
type Reader ¶
type Reader struct { *Buffer // contains filtered or unexported fields }
Reader implements the io.Reader, io.Seeker, io.ByteReader and io.ReaderAt interfaces The special thing about a siegreader.Reader is that you can have a bunch of them all reading independently from the one buffer.
Example:
buffers := siegreader.New() buffer := buffers.Get(underlying_io_reader) rdr := siegreader.ReaderFrom(buffer) second_rdr := siegreader.ReaderFrom(buffer) limit_rdr := siegreader.LimitedReaderFrom(buffer, 4096) reverse_rdr := siegreader.ReverseReaderFrom(buffer)
func ReaderFrom ¶
ReaderFrom returns a Reader reading from the Buffer.
type ReverseReader ¶
type ReverseReader struct { *Buffer // contains filtered or unexported fields }
ReverseReader implements the io.Reader and io.ByteReader interfaces, but for each it does so from the end of the io source working backwards. Like Readers, you can have multiple ReverseReaders all reading independently from the same buffer.
func ReverseReaderFrom ¶
func ReverseReaderFrom(b *Buffer) *ReverseReader
ReverseReaderFrom returns a ReverseReader reading from the Buffer.
func (*ReverseReader) Read ¶
func (r *ReverseReader) Read(b []byte) (int, error)
Read implements the io.Reader interface.
func (*ReverseReader) ReadByte ¶
func (r *ReverseReader) ReadByte() (byte, error)
ReadByte implements the io.ByteReader interface.