Documentation
ΒΆ
Index ΒΆ
- func Reader(r io.Reader, callbacks ...ReadCallback) io.Reader
- func TeeReader(r io.Reader, w io.Writer, callbacks ...ReadCallback) io.Reader
- func Writer(w io.Writer, callbacks ...WriteCallback) io.Writer
- type BufferedReader
- type BufferedWriter
- type HashCallback
- type MultiHashCallback
- type ReadCallback
- type SizeCallback
- type WriteCallback
Constants ΒΆ
This section is empty.
Variables ΒΆ
This section is empty.
Functions ΒΆ
func Reader ΒΆ
func Reader(r io.Reader, callbacks ...ReadCallback) io.Reader
Reader wraps any io.Reader with callbacks. It behaves exactly like the underlying reader, but executes callbacks for each chunk.
Types ΒΆ
type BufferedReader ΒΆ
type BufferedReader struct {
// contains filtered or unexported fields
}
BufferedReader wraps an io.Reader (optionally ReaderAt) and executes callbacks sequentially for every block.
func NewReader ΒΆ
func NewReader(r io.Reader, cbs []ReadCallback) *BufferedReader
NewReader returns a *BufferedReader with an internal 32β―KiB buffer. Pass nil or an empty slice to disable callbacks.
func (*BufferedReader) Read ΒΆ
func (br *BufferedReader) Read(p []byte) (int, error)
Read implements io.Reader.
func (*BufferedReader) ReadAt ΒΆ
func (br *BufferedReader) ReadAt(p []byte, off int64) (int, error)
ReadAt passes through when the underlying supports it.
func (*BufferedReader) Results ΒΆ
func (br *BufferedReader) Results() map[string]any
Results returns a snapshot of each callback's current state.
type BufferedWriter ΒΆ
type BufferedWriter struct {
// contains filtered or unexported fields
}
BufferedWriter wraps an io.Writer (optionally WriterAt) and executes callbacks sequentially for every block.
func NewWriter ΒΆ
func NewWriter(w io.Writer, cbs []WriteCallback) *BufferedWriter
NewWriter returns a *BufferedWriter with an internal 32β―KiB buffer.
func (*BufferedWriter) Close ΒΆ
func (bw *BufferedWriter) Close() error
Close flushes any buffered data and closes the writer if it implements io.Closer.
func (*BufferedWriter) Flush ΒΆ
func (bw *BufferedWriter) Flush() error
Flush ensures all buffered data reaches the underlying writer. (Expose this if your callers need explicit control.)
func (*BufferedWriter) Results ΒΆ
func (bw *BufferedWriter) Results() map[string]any
Results returns a snapshot of each callback's current state.
type HashCallback ΒΆ
type HashCallback struct {
// contains filtered or unexported fields
}
HashCallback computes hash while data passes through.
func NewHashCallback ΒΆ
func NewHashCallback(algorithm string) *HashCallback
NewHashCallback creates a callback for the specified algorithm. Supported algorithms: "md5", "sha1", "sha256", "sha512"
func (*HashCallback) HexSum ΒΆ
func (hc *HashCallback) HexSum() string
HexSum returns the hash as a hex string
func (*HashCallback) Name ΒΆ
func (hc *HashCallback) Name() string
func (*HashCallback) OnData ΒΆ
func (hc *HashCallback) OnData(chunk []byte) error
func (*HashCallback) Result ΒΆ
func (hc *HashCallback) Result() any
type MultiHashCallback ΒΆ
type MultiHashCallback struct {
// contains filtered or unexported fields
}
MultiHashCallback computes multiple hashes in one pass.
func NewMultiHashCallback ΒΆ
func NewMultiHashCallback(algorithms ...string) *MultiHashCallback
NewMultiHashCallback creates a callback that computes multiple hashes.
func (*MultiHashCallback) Get ΒΆ
func (mh *MultiHashCallback) Get(algorithm string) string
Get returns the hex hash for a specific algorithm
func (*MultiHashCallback) GetAll ΒΆ
func (mh *MultiHashCallback) GetAll() map[string]string
GetAll returns all hashes as hex strings
func (*MultiHashCallback) Name ΒΆ
func (mh *MultiHashCallback) Name() string
func (*MultiHashCallback) OnData ΒΆ
func (mh *MultiHashCallback) OnData(chunk []byte) error
func (*MultiHashCallback) Result ΒΆ
func (mh *MultiHashCallback) Result() any
type ReadCallback ΒΆ
type ReadCallback interface {
Name() string // e.g. "sha256"
OnData(chunk []byte) error // called for each block; chunk MUST NOT be modified
Result() any // final or interim result
}
ReadCallback processes bytes read from upstream.
type SizeCallback ΒΆ
type SizeCallback struct {
// contains filtered or unexported fields
}
SizeCallback tracks the number of bytes processed.
func NewSizeCallback ΒΆ
func NewSizeCallback() *SizeCallback
func (*SizeCallback) Name ΒΆ
func (sc *SizeCallback) Name() string
func (*SizeCallback) OnData ΒΆ
func (sc *SizeCallback) OnData(chunk []byte) error
func (*SizeCallback) Result ΒΆ
func (sc *SizeCallback) Result() any
func (*SizeCallback) Size ΒΆ
func (sc *SizeCallback) Size() int64
Size returns the total bytes processed