Documentation ¶
Index ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type Manager ¶
type Manager interface { // Start the manager. Must be called before any other method. // Should be called in a goroutine. Dispatch() // TimeoutDuration returns the current timeout duration. TimeoutDuration() time.Duration // IsBenched returns true if messages to [nodeID] regarding [chainID] // should not be sent over the network and should immediately fail. IsBenched(nodeID ids.NodeID, chainID ids.ID) bool // Register the existence of the given chain. // Must be called before any method calls that use the // ID of the chain. RegisterChain(ctx *snow.ConsensusContext) error // RegisterRequest notes that we expect a response of type [op] from // [nodeID] for chain [chainID]. If we don't receive a response in // time, [timeoutHandler] is executed. RegisterRequest( nodeID ids.NodeID, chainID ids.ID, op message.Op, requestID ids.RequestID, timeoutHandler func(), ) // Registers that we would have sent a request to a validator but they // are unreachable because they are benched or because of network conditions // (e.g. we're not connected), so we didn't send the query. For the sake // of calculating the average latency and network timeout, we act as // though we sent the validator a request and it timed out. RegisterRequestToUnreachableValidator() // Registers that [nodeID] sent us a response of type [op] // for the given chain. The response corresponds to the given // requestID we sent them. [latency] is the time between us // sending them the request and receiving their response. RegisterResponse( nodeID ids.NodeID, chainID ids.ID, requestID ids.RequestID, op message.Op, latency time.Duration, ) // Mark that we no longer expect a response to this request we sent. // Does not modify the timeout. RemoveRequest(requestID ids.RequestID) }
Manages timeouts for requests sent to peers.
func NewManager ¶
func NewManager( timeoutConfig *timer.AdaptiveTimeoutConfig, benchlistMgr benchlist.Manager, metricsNamespace string, metricsRegister prometheus.Registerer, ) (Manager, error)
Click to show internal directories.
Click to hide internal directories.