gtsocial-umbx

Unnamed repository; edit this file 'description' to name the repository.
Log | Files | Refs | README | LICENSE

write_counter.go (737B)


      1 package rifs
      2 
      3 import (
      4 	"io"
      5 )
      6 
      7 // WriteCounter proxies write requests and maintains a counter of bytes written.
      8 type WriteCounter struct {
      9 	w       io.Writer
     10 	counter int
     11 }
     12 
     13 // NewWriteCounter returns a new `WriteCounter` struct wrapping a `Writer`.
     14 func NewWriteCounter(w io.Writer) *WriteCounter {
     15 	return &WriteCounter{
     16 		w: w,
     17 	}
     18 }
     19 
     20 // Count returns the total number of bytes read.
     21 func (wc *WriteCounter) Count() int {
     22 	return wc.counter
     23 }
     24 
     25 // Reset resets the counter to zero.
     26 func (wc *WriteCounter) Reset() {
     27 	wc.counter = 0
     28 }
     29 
     30 // Write forwards a write to the underlying `Writer` while bumping the counter.
     31 func (wc *WriteCounter) Write(b []byte) (n int, err error) {
     32 	n, err = wc.w.Write(b)
     33 	wc.counter += n
     34 
     35 	return n, err
     36 }