Skip to content

wader/swutil

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

5 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

swutil

swutil provides small libraries with convenient implementations to complement the Go standard library.

Build Status GoDoc

swio

-- import "bitbucket.org/shipwire/swutil/swio"

Package swio provides additional utilities on top of the standard io package.

Usage

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.

func ForkReader

func ForkReader(r io.Reader, n int) (head, tail io.Reader)

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

func SeekerPosition(r io.Seeker) (int64, error)

SekerPosition 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.

type CloseFunc

type CloseFunc func() error

CloseFunc documents a function that satisfies io.Closer.

type ReadCounter

type ReadCounter interface {
	io.Reader
	BytesRead() int64
}

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

type ReadSeekerCloser interface {
	io.Reader
	io.Seeker
	io.Closer
}

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 {
}

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

type WriteCounter interface {
	io.Writer
	BytesWritten() int64
}

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

About

Small utilities in Go

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Go 100.0%