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  }