github.com/MetalBlockchain/subnet-evm@v0.4.9/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/MetalBlockchain/subnet-evm/metrics" 10 ) 11 12 // RequestHandlerStats provides the interface for metrics for both app requests and cross chain requests. 13 type RequestHandlerStats interface { 14 UpdateTimeUntilDeadline(duration time.Duration) 15 IncDeadlineDroppedRequest() 16 } 17 18 type requestHandlerStats struct { 19 timeUntilDeadline metrics.Timer 20 droppedRequests metrics.Counter 21 } 22 23 func (h *requestHandlerStats) IncDeadlineDroppedRequest() { 24 h.droppedRequests.Inc(1) 25 } 26 27 func (h *requestHandlerStats) UpdateTimeUntilDeadline(duration time.Duration) { 28 h.timeUntilDeadline.Update(duration) 29 } 30 31 func NewRequestHandlerStats() RequestHandlerStats { 32 return &requestHandlerStats{ 33 timeUntilDeadline: metrics.GetOrRegisterTimer("net_req_time_until_deadline", nil), 34 droppedRequests: metrics.GetOrRegisterCounter("net_req_deadline_dropped", nil), 35 } 36 } 37 38 func NewCrossChainRequestHandlerStats() RequestHandlerStats { 39 return &requestHandlerStats{ 40 timeUntilDeadline: metrics.GetOrRegisterTimer("net_cross_chain_req_time_until_deadline", nil), 41 droppedRequests: metrics.GetOrRegisterCounter("net_cross_chain_req_deadline_dropped", nil), 42 } 43 }