Documentation ¶
Index ¶
Constants ¶
This section is empty.
Variables ¶
var ( ErrWhence = errors.New("unknown whence") ErrOffset = errors.New("invalid offset") )
var (
ErrInvalidSize = errors.New("invalid size")
)
Functions ¶
func NewCancellable ¶
NewCancellable combines ctx and r so that a returned Reader reads from r and also respects context cancellation.
The returned Reader stores a first error encountered, including EOF and context cancellation. If any error has occurred, any subsequent Read calls always return same error.
The context cancellation prevents afterwards Read calls from actually reading the underlying r. However that does not mean that it would unblock already blocking Read calls (e.g. reading sockets, terminals, etc.) If r is possible to block long and you wish to unblock it in that case, r itself must be cancellable by its own mean. For files, you can combine os.Pipe and platform specific poll functions, for example, epoll for Linux, kqueue for Mac OS.
The returned Reader is not goroutine safe. Calling Read multiple times simultaneously may cause undefined behaviors.
func NewMultiError ¶
NewMultiError wraps errors into single error ignoring nil error in errs. If all errors are nil or len(errs) == 0, NewMultiError returns nil.
func NewMultiErrorUnchecked ¶
NewMultiErrorUnchecked wraps errors into single error. As suffix "unchecked" implies it does not do any filtering for errs. The returned error is always non nil even if all errors are nil or len(errs) == 0.
func NewMultiReadCloser ¶
func NewMultiReadCloser[T io.ReadCloser](r ...T) io.ReadCloser
Types ¶
type ReadAtReadSeekCloser ¶
type ReadAtReadSeekCloser interface { io.ReaderAt io.ReadSeekCloser }
func NewMultiReadAtSeekCloser ¶
func NewMultiReadAtSeekCloser(readers []SizedReaderAt) ReadAtReadSeekCloser
type ReadAtSizer ¶
type SizedReaderAt ¶
func SizedReadersFromFileLike ¶
func SizedReadersFromFileLike[T FileLike](files []T) ([]SizedReaderAt, error)
SizedReadersFromFileLike constructs []SizedReaderAt from file like objects. For example, *os.File and afero.File implement FileLike.
func SizedReadersFromReadAtSizer ¶
func SizedReadersFromReadAtSizer[T ReadAtSizer](readers []T) []SizedReaderAt
SizedReadersFromReadAtSizer constructs []SizedReaderAt from ReaderAt with Size method. For example, *io.SectionReader implements ReadAtSizer.