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  }