Documentation ¶
Index ¶
- Variables
- type AdaptiveTimeoutConfig
- type AdaptiveTimeoutManager
- func (tm *AdaptiveTimeoutManager) Dispatch()
- func (tm *AdaptiveTimeoutManager) Initialize(config *AdaptiveTimeoutConfig) error
- func (tm *AdaptiveTimeoutManager) ObserveLatency(latency time.Duration)
- func (tm *AdaptiveTimeoutManager) Put(id ids.ID, msgType constants.MsgType, timeoutHandler func()) time.Time
- func (tm *AdaptiveTimeoutManager) Remove(id ids.ID)
- func (tm *AdaptiveTimeoutManager) Stop()
- func (tm *AdaptiveTimeoutManager) Timeout()
- func (tm *AdaptiveTimeoutManager) TimeoutDuration() time.Duration
- type Clock
- type Meter
- type Repeater
- type TimedMeter
- type TimeoutManager
- type Timer
Constants ¶
This section is empty.
Variables ¶
var MaxTime = time.Unix(1<<63-62135596801, 0) // 0 is used because we drop the nano-seconds
MaxTime was taken from https://stackoverflow.com/questions/25065055/what-is-the-maximum-time-time-in-go/32620397#32620397
Functions ¶
This section is empty.
Types ¶
type AdaptiveTimeoutConfig ¶
type AdaptiveTimeoutConfig struct { InitialTimeout time.Duration MinimumTimeout time.Duration MaximumTimeout time.Duration // Timeout is [timeoutCoefficient] * average response time // [timeoutCoefficient] must be > 1 TimeoutCoefficient float64 // Larger halflife --> less volatile timeout // [timeoutHalfLife] must be positive TimeoutHalflife time.Duration MetricsNamespace string Registerer prometheus.Registerer }
AdaptiveTimeoutConfig contains the parameters provided to the adaptive timeout manager.
type AdaptiveTimeoutManager ¶
type AdaptiveTimeoutManager struct {
// contains filtered or unexported fields
}
AdaptiveTimeoutManager is a manager for timeouts.
func (*AdaptiveTimeoutManager) Initialize ¶
func (tm *AdaptiveTimeoutManager) Initialize(config *AdaptiveTimeoutConfig) error
Initialize this timeout manager with the provided config
func (*AdaptiveTimeoutManager) ObserveLatency ¶
func (tm *AdaptiveTimeoutManager) ObserveLatency(latency time.Duration)
ObserveLatency allows the caller to manually register a response latency. We use this to pretend that it a query to a benched validator timed out when actually, we never even sent them a request.
func (*AdaptiveTimeoutManager) Put ¶
func (tm *AdaptiveTimeoutManager) Put(id ids.ID, msgType constants.MsgType, timeoutHandler func()) time.Time
Put registers a timeout for [id]. If the timeout occurs, [timeoutHandler] is called. Returns the time at which the timeout will fire if it is not first removed by calling [tm.Remove].
func (*AdaptiveTimeoutManager) Remove ¶
func (tm *AdaptiveTimeoutManager) Remove(id ids.ID)
Remove the timeout associated with [id]. Its timeout handler will not be called.
func (*AdaptiveTimeoutManager) Stop ¶
func (tm *AdaptiveTimeoutManager) Stop()
Stop executing timeouts
func (*AdaptiveTimeoutManager) Timeout ¶
func (tm *AdaptiveTimeoutManager) Timeout()
Timeout registers a timeout
func (*AdaptiveTimeoutManager) TimeoutDuration ¶
func (tm *AdaptiveTimeoutManager) TimeoutDuration() time.Duration
TimeoutDuration returns the current network timeout duration
type Clock ¶
type Clock struct {
// contains filtered or unexported fields
}
Clock acts as a thin wrapper around global time that allows for easy testing
type Meter ¶
type Meter interface { // Notify this meter of a new event for it to rate Tick() // Return the number of events this meter is currently tracking Ticks() int }
Meter tracks the number of occurrences of a specified event
type Repeater ¶
type Repeater struct {
// contains filtered or unexported fields
}
Repeater ...
func NewRepeater ¶
NewRepeater ...
type TimedMeter ¶
type TimedMeter struct { // Can be used to fake time in tests Clock *Clock // Amount of time to keep a tick Duration time.Duration // contains filtered or unexported fields }
TimedMeter is a meter that discards old events
type TimeoutManager ¶
type TimeoutManager struct {
// contains filtered or unexported fields
}
TimeoutManager is a manager for timeouts.
func (*TimeoutManager) Initialize ¶
func (tm *TimeoutManager) Initialize(duration time.Duration)
Initialize is a constructor b/c Golang, in its wisdom, doesn't ... have them?
func (*TimeoutManager) Put ¶
func (tm *TimeoutManager) Put(id ids.ID, handler func())
Put puts hash into the hash map
func (*TimeoutManager) Remove ¶
func (tm *TimeoutManager) Remove(id ids.ID)
Remove the item that no longer needs to be there.
type Timer ¶
type Timer struct {
// contains filtered or unexported fields
}
Timer wraps a timer object. This allows a user to specify a handler. Once specifying the handler, the dispatch thread can be called. The dispatcher will only return after calling Stop. SetTimeoutIn will result in calling the handler in the specified amount of time.
func NewStagedTimer ¶
NewStagedTimer returns a timer that will execute [f] when a timeout occurs and execute an additional timeout after the returned duration if [f] returns true and some duration.
func (*Timer) SetTimeoutIn ¶
SetTimeoutIn will set the timer to fire the handler in [duration]