Documentation
¶
Overview ¶
Package swio provides additional utilities on top of the standard io package.
Index ¶
- Variables
- func ForkReader(r io.Reader, n int) (head, tail io.Reader)
- func NewReadCloser(r io.Reader, c CloseFunc) io.ReadCloser
- func SeekerPosition(r io.Seeker) (int64, error)
- func TeeReadCloser(r io.ReadCloser, w io.Writer) io.ReadCloser
- type CloseFunc
- type ReadCounter
- type ReadSeekerAt
- type ReadSeekerCloser
- type SeekBuffer
- type WriteCounter
Constants ¶
This section is empty.
Variables ¶
var DummyReader = newDummy(time.Now().Unix())
DummyReader is a reader of pseudo-random data. It is meant to be more efficient than cryptographically random data, but is useful only in limited cases such as testing other readers.
Functions ¶
func ForkReader ¶
ForkReader accepts a reader and forks it at a given point. It returns two readers, one that continues from the beginning of the original reader, and another that reads from the nth byte. Readers are a FIFO stream, so reads from the second reader can't actually jump ahead. To solve this problem, reads from the tail cause the entire remaining contents of the head to be transparently read into memory.
func NewReadCloser ¶
func NewReadCloser(r io.Reader, c CloseFunc) io.ReadCloser
NewReadCloser wraps r with CloseFunc c.
func SeekerPosition ¶
SeekerPosition returns the current offset of an io.Seeker
func TeeReadCloser ¶
func TeeReadCloser(r io.ReadCloser, w io.Writer) io.ReadCloser
TeeReadCloser returns a ReadCloser that writes everything read from it to w. Its content is read from r. All writes must return before anything can be read. Any write error will be returned from Read. The Close method on the returned ReadCloser is called derived from r.
Types ¶
type CloseFunc ¶
type CloseFunc func() error
CloseFunc documents a function that satisfies io.Closer.
type ReadCounter ¶
ReadCounter is a reader that keeps track of the total number of bytes read.
func NewReadCounter ¶
func NewReadCounter(r io.Reader) ReadCounter
NewReadCounter wraps a Reader in a ReadCounter.
type ReadSeekerAt ¶
type ReadSeekerAt interface {
io.ReadSeeker
io.ReaderAt
}
ReadSeekerAt is the interface that groups io.ReadSeeker and io.ReaderAt.
type ReadSeekerCloser ¶
ReadSeekerCloser wraps the io.Reader, io.Seeker, and io.Closer types.
func NewReadSeekerCloser ¶
func NewReadSeekerCloser(r io.ReadSeeker, c CloseFunc) ReadSeekerCloser
NewReadSeekerCloser wraps r with the close function c.
func NewSeekBufferCloser ¶
func NewSeekBufferCloser(r io.ReadCloser, l int64) ReadSeekerCloser
NewSeekBufferCloser creates a new SeekBuffer using ReadCloser r. l is the initial capacity of the internal buffer. The close method from r is forwarded to the returned ReadSeekerCloser.
func NopReadSeekerCloser ¶
func NopReadSeekerCloser(r io.ReadSeeker) ReadSeekerCloser
NopReadSeekerCloser wraps r with a no-op close function.
type SeekBuffer ¶
type SeekBuffer struct {
// contains filtered or unexported fields
}
SeekBuffer contains a reader where all data read from it is buffered, and thus both readable and seekable. It essentially augments bytes.Reader so that all data does not need to be read at once.
func NewSeekBuffer ¶
func NewSeekBuffer(r io.Reader, l int64) *SeekBuffer
NewSeekBuffer creates a new SeekBuffer using reader r. l is the initial capacity of the internal buffer. If r happens to be a ReadSeeker already, r is used directly without any additional copies of the data.
func (*SeekBuffer) Read ¶
func (s *SeekBuffer) Read(b []byte) (int, error)
Read reads from the internal buffer or source reader until b is filled or an error occurs.
func (*SeekBuffer) ReadAt ¶
func (s *SeekBuffer) ReadAt(b []byte, off int64) (int, error)
ReadAt implements io.ReaderAt for SeekBuffer.
func (*SeekBuffer) Seek ¶
func (s *SeekBuffer) Seek(offset int64, whence int) (int64, error)
Seek implements io.Seeker for SeekBuffer. If the new offset goes beyond what is buffered, SeekBuffer will read from the source reader until offset can be reached or an error is returned. If whence is 2, SeekBuffer will read until EOF or an error is reached.
type WriteCounter ¶
WriteCounter is a writer that keeps track of the total number of bytes written.
func NewWriteCounter ¶
func NewWriteCounter(w io.Writer) WriteCounter
NewWriteCounter wraps a Writer in a WriteCounter