shithub: furgit

ref: df1f2fb3daa1acd25c88510f259d5535fb482126
dir: /network/protocol/sideband64k/helpers_test.go/

View raw version
package sideband64k_test

import (
	"bytes"
	"io"
)

type limitWriter struct {
	buf         bytes.Buffer
	maxPerWrite int
	flushes     int
	shortWrite  bool
}

func (w *limitWriter) Write(p []byte) (int, error) {
	if w.shortWrite {
		return 0, nil
	}

	if w.maxPerWrite > 0 && len(p) > w.maxPerWrite {
		p = p[:w.maxPerWrite]
	}

	return w.buf.Write(p)
}

func (w *limitWriter) Flush() error {
	w.flushes++

	return nil
}

type byteReader struct {
	data []byte
}

func (r *byteReader) Read(p []byte) (int, error) {
	if len(r.data) == 0 {
		return 0, io.EOF
	}

	p[0] = r.data[0]
	r.data = r.data[1:]

	return 1, nil
}