iotest

Imports

Imports #

"io"
"log"
"bytes"
"errors"
"fmt"
"io"
"io"

Constants & Variables

ErrTimeout var #

ErrTimeout is a fake timeout error.

var ErrTimeout = *ast.CallExpr

Structs

dataErrReader struct #

type dataErrReader struct {
r io.Reader
unread []byte
data []byte
}

errReader struct #

type errReader struct {
err error
}

halfReader struct #

type halfReader struct {
r io.Reader
}

oneByteReader struct #

type oneByteReader struct {
r io.Reader
}

readLogger struct #

type readLogger struct {
prefix string
r io.Reader
}

smallByteReader struct #

type smallByteReader struct {
r io.Reader
off int
n int
}

timeoutReader struct #

type timeoutReader struct {
r io.Reader
count int
}

truncateWriter struct #

type truncateWriter struct {
w io.Writer
n int64
}

writeLogger struct #

type writeLogger struct {
prefix string
w io.Writer
}

Functions

DataErrReader function #

DataErrReader changes the way errors are handled by a Reader. Normally, a Reader returns an error (typically EOF) from the first Read call after the last piece of data is read. DataErrReader wraps a Reader and changes its behavior so the final error is returned along with the final data, instead of in the first call after the final data.

func DataErrReader(r io.Reader) io.Reader

ErrReader function #

ErrReader returns an [io.Reader] that returns 0, err from all Read calls.

func ErrReader(err error) io.Reader

HalfReader function #

HalfReader returns a Reader that implements Read by reading half as many requested bytes from r.

func HalfReader(r io.Reader) io.Reader

NewReadLogger function #

NewReadLogger returns a reader that behaves like r except that it logs (using [log.Printf]) each read to standard error, printing the prefix and the hexadecimal data read.

func NewReadLogger(prefix string, r io.Reader) io.Reader

NewWriteLogger function #

NewWriteLogger returns a writer that behaves like w except that it logs (using [log.Printf]) each write to standard error, printing the prefix and the hexadecimal data written.

func NewWriteLogger(prefix string, w io.Writer) io.Writer

OneByteReader function #

OneByteReader returns a Reader that implements each non-empty Read by reading one byte from r.

func OneByteReader(r io.Reader) io.Reader

Read method #

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

Read method #

func (l *readLogger) Read(p []byte) (n int, err error)

Read method #

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

Read method #

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

Read method #

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

Read method #

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

Read method #

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

TimeoutReader function #

TimeoutReader returns [ErrTimeout] on the second read with no data. Subsequent calls to read succeed.

func TimeoutReader(r io.Reader) io.Reader

TruncateWriter function #

TruncateWriter returns a Writer that writes to w but stops silently after n bytes.

func TruncateWriter(w io.Writer, n int64) io.Writer

Write method #

func (l *writeLogger) Write(p []byte) (n int, err error)

Write method #

func (t *truncateWriter) Write(p []byte) (n int, err error)

Generated with Arrow