ioutils

package module
v0.0.0-...-b4e793b Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Feb 25, 2023 License: MIT Imports: 13 Imported by: 15

README

go-ioutils

Go I/O utils.

GoDoc

Install

go get github.com/koofr/go-ioutils

Testing

go get -t
go test

Documentation

Index

Constants

This section is empty.

Variables

View Source
var ErrDirtyReader = errors.New("dirty reader")
View Source
var ErrExactSizeMismatch = errors.New("exact size mismatch")
View Source
var ErrMaxSizeExceeded = errors.New("max size exceeded")

Functions

func ApplyFileSpan

func ApplyFileSpan(r io.ReadSeeker, span *FileSpan) (io.Reader, error)

func CompareReaders

func CompareReaders(r1 io.Reader, r2 io.Reader) (bool, error)

func CountLines

func CountLines(r io.Reader) (int64, error)

func NewExactSizeReader

func NewExactSizeReader(r io.ReadCloser, expectedSize int64) io.ReadCloser

func NewLazyReader

func NewLazyReader(builder func() (io.Reader, error)) io.Reader

func NewRechunkingReader

func NewRechunkingReader(fetchMore func() ([]byte, error)) io.Reader

func NewSizeLimitedReader

func NewSizeLimitedReader(r io.ReadCloser, limit int64) io.ReadCloser

func ReadFillBuffer

func ReadFillBuffer(r io.Reader, buf []byte) (n int, err error)

ReadFillBuffer is similar to io.ReadFull but it does not return ErrUnexpectedEOF

func SplitReader

func SplitReader(r io.ReadCloser, bufSize uint64, n uint) []io.ReadCloser

Types

type ChanCloser

type ChanCloser struct {
	io.Reader
	// contains filtered or unexported fields
}

func NewChanCloser

func NewChanCloser(r io.Reader, ch chan bool) *ChanCloser

func (*ChanCloser) Close

func (c *ChanCloser) Close() error

type CheckEmptyReader

type CheckEmptyReader struct {
	// contains filtered or unexported fields
}

func NewCheckEmptyReader

func NewCheckEmptyReader(r io.ReadCloser) *CheckEmptyReader

func (*CheckEmptyReader) Close

func (r *CheckEmptyReader) Close() (err error)

func (*CheckEmptyReader) IsEmpty

func (r *CheckEmptyReader) IsEmpty() (isEmpty bool, err error)

func (*CheckEmptyReader) Read

func (r *CheckEmptyReader) Read(p []byte) (n int, err error)

type CtxReader

type CtxReader struct {
	// contains filtered or unexported fields
}

func NewCtxReader

func NewCtxReader(ctx context.Context, r io.Reader) *CtxReader

func (*CtxReader) Read

func (r *CtxReader) Read(p []byte) (int, error)

type DebugReader

type DebugReader struct {
	// contains filtered or unexported fields
}

func NewDebugReader

func NewDebugReader(r io.Reader) *DebugReader

func (*DebugReader) Read

func (r *DebugReader) Read(p []byte) (n int, err error)

func (*DebugReader) String

func (r *DebugReader) String() string

type DelayedEOFReader

type DelayedEOFReader struct {
	// contains filtered or unexported fields
}

DelayedEOFReader fixes Read behaviour when n > 0 and err == io.EOF. Read usually returns (1, nil) and (0, io.EOF) but it can also just end with (1, io.EOF). DelayedEOFReader fixes the second behavior to behave like the first one.

func NewDelayedEOFReader

func NewDelayedEOFReader(r io.Reader) *DelayedEOFReader

func (*DelayedEOFReader) Read

func (r *DelayedEOFReader) Read(p []byte) (int, error)

type EofReader

type EofReader struct {
	io.Reader
	Eof bool
}

func NewEofReader

func NewEofReader(reader io.Reader) *EofReader

func (*EofReader) Read

func (r *EofReader) Read(p []byte) (n int, err error)

type ErrorReader

type ErrorReader struct {
	Error error
}

func NewErrorReader

func NewErrorReader(err error) *ErrorReader

func (*ErrorReader) Read

func (r *ErrorReader) Read(p []byte) (n int, err error)

type ExactSizeReader

type ExactSizeReader struct {
	// contains filtered or unexported fields
}

func (*ExactSizeReader) Close

func (r *ExactSizeReader) Close() (err error)

func (*ExactSizeReader) Read

func (r *ExactSizeReader) Read(p []byte) (n int, err error)

type FileRemoveReader

type FileRemoveReader struct {
	*os.File
}

func NewFileRemoveReader

func NewFileRemoveReader(file *os.File) *FileRemoveReader

func (*FileRemoveReader) Close

func (r *FileRemoveReader) Close() error

type FileSpan

type FileSpan struct {
	Start, End int64
}

type FuncReadCloseCloner

type FuncReadCloseCloner struct {
	io.ReadCloser
	CloneFunc func() (io.ReadCloser, error)
}

func (*FuncReadCloseCloner) Clone

func (r *FuncReadCloseCloner) Clone() (io.ReadCloser, error)

type FuncReader

type FuncReader func(p []byte) (int, error)

func (FuncReader) Read

func (r FuncReader) Read(p []byte) (n int, err error)

type FuncWriter

type FuncWriter func(p []byte) (int, error)

func (FuncWriter) Write

func (r FuncWriter) Write(p []byte) (n int, err error)

type HashReader

type HashReader struct {
	io.Reader
	// contains filtered or unexported fields
}

func NewHashReader

func NewHashReader(reader io.Reader) *HashReader

func NewHashReaderFromState

func NewHashReaderFromState(reader io.Reader, state []byte) *HashReader

func (*HashReader) GetState

func (r *HashReader) GetState() []byte

func (*HashReader) Hash

func (r *HashReader) Hash() (hash string)

func (*HashReader) Read

func (r *HashReader) Read(p []byte) (n int, err error)

type LazyReader

type LazyReader struct {
	// contains filtered or unexported fields
}

func (*LazyReader) Close

func (lr *LazyReader) Close() error

func (*LazyReader) Read

func (lr *LazyReader) Read(p []byte) (n int, err error)

type PassCloseReader

type PassCloseReader struct {
	// contains filtered or unexported fields
}

func NewPassCloseReader

func NewPassCloseReader(reader io.Reader, close func() error) *PassCloseReader

func (*PassCloseReader) Close

func (r *PassCloseReader) Close() error

func (*PassCloseReader) Read

func (r *PassCloseReader) Read(p []byte) (n int, err error)

type ProgressReportingReader

type ProgressReportingReader struct {
	// contains filtered or unexported fields
}

func NewProgressReportingReader

func NewProgressReportingReader(r io.Reader, minChange int64, onChange func(bytesRead int64)) *ProgressReportingReader

func (*ProgressReportingReader) Read

func (r *ProgressReportingReader) Read(p []byte) (n int, err error)

type ReadCloseCloner

type ReadCloseCloner interface {
	io.ReadCloser
	Clone() (io.ReadCloser, error)
}

type ReadWithEOFReader

type ReadWithEOFReader struct {
	// contains filtered or unexported fields
}

ReadWithEOFReader is used for testing Read behaviour when n > 0 and err == io.EOF. Read usually returns (1, nil) and (0, io.EOF) but it can also just end with (1, io.EOF).

func NewReadWithEOFReader

func NewReadWithEOFReader() *ReadWithEOFReader

func NewReadWithEOFReaderLen

func NewReadWithEOFReaderLen(l int) *ReadWithEOFReader

func (*ReadWithEOFReader) Read

func (r *ReadWithEOFReader) Read(p []byte) (n int, err error)

type RefCountedFileRemoveReader

type RefCountedFileRemoveReader struct {
	*os.File
	// contains filtered or unexported fields
}

func (*RefCountedFileRemoveReader) Clone

func (*RefCountedFileRemoveReader) Close

func (r *RefCountedFileRemoveReader) Close() error

func (*RefCountedFileRemoveReader) SetOnAfterClose

func (r *RefCountedFileRemoveReader) SetOnAfterClose(onAfterClose func())

type RefCountedFileRemover

type RefCountedFileRemover struct {
	OnRemoveError func(path string, err error)
	// contains filtered or unexported fields
}

func NewRefCountedFileRemover

func NewRefCountedFileRemover(path string) *RefCountedFileRemover

func (*RefCountedFileRemover) Open

func (*RefCountedFileRemover) TotalClonedCount

func (r *RefCountedFileRemover) TotalClonedCount() int64

type SharedLimiter

type SharedLimiter struct {
	// contains filtered or unexported fields
}

func NewSharedLimiter

func NewSharedLimiter(bytesPerSec int64) *SharedLimiter

func (*SharedLimiter) GetLimit

func (l *SharedLimiter) GetLimit() int64

func (*SharedLimiter) SetLimit

func (l *SharedLimiter) SetLimit(newBytesPerSec int64)

func (*SharedLimiter) WaitN

func (l *SharedLimiter) WaitN(ctx context.Context, n int) (err error)

type SharedThrottledReader

type SharedThrottledReader struct {
	// contains filtered or unexported fields
}

func (*SharedThrottledReader) Close

func (r *SharedThrottledReader) Close() (err error)

func (*SharedThrottledReader) Read

func (r *SharedThrottledReader) Read(p []byte) (n int, err error)

type SharedThrottledReaderLimiter

type SharedThrottledReaderLimiter interface {
	WaitN(ctx context.Context, n int) error
}

type SizeLimitedReader

type SizeLimitedReader struct {
	// contains filtered or unexported fields
}

func (*SizeLimitedReader) Close

func (r *SizeLimitedReader) Close() (err error)

func (*SizeLimitedReader) Read

func (r *SizeLimitedReader) Read(p []byte) (n int, err error)

type SizeReader

type SizeReader struct {
	io.Reader
	// contains filtered or unexported fields
}

func NewSizeReader

func NewSizeReader(reader io.Reader) *SizeReader

func (*SizeReader) Read

func (r *SizeReader) Read(p []byte) (n int, err error)

func (*SizeReader) Size

func (r *SizeReader) Size() (size int64)

type StartReader

type StartReader struct {
	io.Reader
	OnStart func()
	// contains filtered or unexported fields
}

func NewStartReader

func NewStartReader(reader io.Reader, onStart func()) *StartReader

func (*StartReader) Read

func (r *StartReader) Read(p []byte) (n int, err error)

type TempFile

type TempFile struct {
	*os.File
}

func NewTempFile

func NewTempFile(prefix string) (t *TempFile, err error)

func (*TempFile) Close

func (t *TempFile) Close() error

type ThrottledReader

type ThrottledReader struct {
	// contains filtered or unexported fields
}

func NewThrottledReader

func NewThrottledReader(ctx context.Context, r io.ReadCloser, bytesPerSec int64) *ThrottledReader

func (*ThrottledReader) Close

func (r *ThrottledReader) Close() (err error)

func (*ThrottledReader) Read

func (r *ThrottledReader) Read(p []byte) (n int, err error)

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL