datacounter

package module
v1.0.3 Latest Latest
Warning

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

Go to latest
Published: Mar 3, 2022 License: MIT Imports: 7 Imported by: 37

README

Datacounter

Golang counters for readers/writers.

Build Status GoDoc

Examples

ReaderCounter
buf := bytes.Buffer{}
buf.Write(data)
counter := datacounter.NewReaderCounter(&buf)

io.Copy(ioutil.Discard, counter)
if counter.Count() != dataLen {
	t.Fatalf("count mismatch len of test data: %d != %d", counter.Count(), len(data))
}
WriterCounter
buf := bytes.Buffer{}
counter := datacounter.NewWriterCounter(&buf)

counter.Write(data)
if counter.Count() != dataLen {
	t.Fatalf("count mismatch len of test data: %d != %d", counter.Count(), len(data))
}
http.ResponseWriter Counter
handler := func(w http.ResponseWriter, r *http.Request) {
	w.Write(data)
}

req, err := http.NewRequest("GET", "http://example.com/foo", nil)
if err != nil {
	t.Fatal(err)
}

w := httptest.NewRecorder()
counter := datacounter.NewResponseWriterCounter(w)

handler(counter, req)
if counter.Count() != dataLen {
	t.Fatalf("count mismatch len of test data: %d != %d", counter.Count(), len(data))
}

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type ReaderCounter

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

ReaderCounter is counter for io.Reader

func NewReaderCounter

func NewReaderCounter(r io.Reader) *ReaderCounter

NewReaderCounter function for create new ReaderCounter

func (*ReaderCounter) Count

func (counter *ReaderCounter) Count() uint64

Count function return counted bytes

func (*ReaderCounter) Read

func (counter *ReaderCounter) Read(buf []byte) (int, error)

type ResponseWriterCounter

type ResponseWriterCounter struct {
	http.ResponseWriter
	// contains filtered or unexported fields
}

ResponseWriterCounter is counter for http.ResponseWriter

func NewResponseWriterCounter

func NewResponseWriterCounter(rw http.ResponseWriter) *ResponseWriterCounter

NewResponseWriterCounter function create new ResponseWriterCounter

func (*ResponseWriterCounter) Count

func (counter *ResponseWriterCounter) Count() uint64

Count function return counted bytes

func (*ResponseWriterCounter) Header

func (counter *ResponseWriterCounter) Header() http.Header

Header returns underlying Header result

func (*ResponseWriterCounter) Hijack

func (counter *ResponseWriterCounter) Hijack() (net.Conn, *bufio.ReadWriter, error)

Hijack returns underlying Hijack

func (*ResponseWriterCounter) Started

func (counter *ResponseWriterCounter) Started() time.Time

Started returns started value

func (*ResponseWriterCounter) StatusCode added in v1.0.2

func (counter *ResponseWriterCounter) StatusCode() int

StatusCode returns sent status code

func (*ResponseWriterCounter) Write

func (counter *ResponseWriterCounter) Write(buf []byte) (int, error)

Write returns underlying Write result, while counting data size

func (*ResponseWriterCounter) WriteHeader

func (counter *ResponseWriterCounter) WriteHeader(statusCode int)

WriteHeader returns underlying WriteHeader, while setting Runtime header

type WriterCounter

type WriterCounter struct {
	io.Writer
	// contains filtered or unexported fields
}

WriterCounter is counter for io.Writer

func NewWriterCounter

func NewWriterCounter(w io.Writer) *WriterCounter

NewWriterCounter function create new WriterCounter

func (*WriterCounter) Count

func (counter *WriterCounter) Count() uint64

Count function return counted bytes

func (*WriterCounter) Write

func (counter *WriterCounter) Write(buf []byte) (int, error)

Jump to

Keyboard shortcuts

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