@@ -9,56 +9,67 @@ import (
99 "time"
1010)
1111
12- // ResponseWriterCounter is counter for http.ResponseWriter
12+ // ResponseWriterCounter is counter for http.ResponseWriter.
1313type ResponseWriterCounter struct {
1414 http.ResponseWriter
1515 count uint64
16+ writes uint64
1617 started time.Time
1718 statusCode int
1819}
1920
20- // NewResponseWriterCounter function create new ResponseWriterCounter
21+ // NewResponseWriterCounter function create new ResponseWriterCounter.
2122func NewResponseWriterCounter (rw http.ResponseWriter ) * ResponseWriterCounter {
2223 return & ResponseWriterCounter {
2324 ResponseWriter : rw ,
2425 started : time .Now (),
26+ statusCode : 0 ,
27+ count : 0 ,
28+ writes : 0 ,
2529 }
2630}
2731
28- // Write returns underlying Write result, while counting data size
32+ // Write returns underlying Write result, while counting data size.
2933func (counter * ResponseWriterCounter ) Write (buf []byte ) (int , error ) {
3034 n , err := counter .ResponseWriter .Write (buf )
3135 atomic .AddUint64 (& counter .count , uint64 (n ))
32- return n , err
36+ atomic .AddUint64 (& counter .writes , 1 )
37+
38+ return n , err //nolint:wrapcheck
3339}
3440
35- // Header returns underlying Header result
41+ // Header returns underlying Header result.
3642func (counter * ResponseWriterCounter ) Header () http.Header {
3743 return counter .ResponseWriter .Header ()
3844}
3945
40- // WriteHeader returns underlying WriteHeader, while setting Runtime header
46+ // WriteHeader returns underlying WriteHeader, while setting Runtime header.
4147func (counter * ResponseWriterCounter ) WriteHeader (statusCode int ) {
4248 counter .Header ().Set ("X-Runtime" , fmt .Sprintf ("%.6f" , time .Since (counter .started ).Seconds ()))
4349 counter .ResponseWriter .WriteHeader (statusCode )
4450}
4551
46- // Hijack returns underlying Hijack
52+ // Hijack returns underlying Hijack.
4753func (counter * ResponseWriterCounter ) Hijack () (net.Conn , * bufio.ReadWriter , error ) {
48- return counter .ResponseWriter .(http.Hijacker ).Hijack ()
54+ return counter .ResponseWriter .(http.Hijacker ).Hijack () //nolint:wrapcheck
4955}
5056
51- // Count function return counted bytes
57+ // Count function return counted bytes.
5258func (counter * ResponseWriterCounter ) Count () uint64 {
5359 return atomic .LoadUint64 (& counter .count )
5460}
5561
56- // Started returns started value
62+ // Writes function returns count of Write() calls.
63+ func (counter * ResponseWriterCounter ) Writes () uint64 {
64+ return atomic .LoadUint64 (& counter .writes )
65+ }
66+
67+ // Started returns started value.
5768func (counter * ResponseWriterCounter ) Started () time.Time {
5869 return counter .started
5970}
6071
61- // StatusCode returns sent status code
72+ // StatusCode returns sent status code.
6273func (counter * ResponseWriterCounter ) StatusCode () int {
6374 return counter .statusCode
6475}
0 commit comments