github.com/dim4egster/coreth@v0.10.2/peer/stats/stats.go (about) 1 // (c) 2019-2022, Ava Labs, Inc. All rights reserved. 2 // See the file LICENSE for licensing terms. 3 4 package stats 5 6 import ( 7 "time" 8 9 "github.com/dim4egster/coreth/metrics" 10 ) 11 12 // RequestHandlerStats provides the interface for metrics on request handling. 13 // Since we drop 14 type RequestHandlerStats interface { 15 UpdateTimeUntilDeadline(duration time.Duration) 16 IncDeadlineDroppedRequest() 17 } 18 19 type requestHandlerStats struct { 20 timeUntilDeadline metrics.Timer 21 droppedRequests metrics.Counter 22 } 23 24 func (h *requestHandlerStats) IncDeadlineDroppedRequest() { 25 h.droppedRequests.Inc(1) 26 } 27 28 func (h *requestHandlerStats) UpdateTimeUntilDeadline(duration time.Duration) { 29 h.timeUntilDeadline.Update(duration) 30 } 31 32 func NewRequestHandlerStats() RequestHandlerStats { 33 return &requestHandlerStats{ 34 timeUntilDeadline: metrics.GetOrRegisterTimer("net_req_time_until_deadline", nil), 35 droppedRequests: metrics.GetOrRegisterCounter("net_req_deadline_dropped", nil), 36 } 37 }