uptime

package
v1.14.2 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Aug 2, 2025 License: BSD-3-Clause Imports: 4 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type Calculator

type Calculator interface {
	// CalculateUptime calculates the uptime of a validator given their connected status
	CalculateUptime(nodeID ids.NodeID, startTime time.Time, endTime time.Time, connected bool) (float64, time.Duration, error)

	// CalculateUptimePercent calculates the uptime percentage of a validator
	CalculateUptimePercent(nodeID ids.NodeID, startTime time.Time, endTime time.Time) (float64, error)
}

Calculator calculates uptime scores

type LockedCalculator

type LockedCalculator struct {
	// contains filtered or unexported fields
}

LockedCalculator is a thread-safe wrapper for Calculator

func NewLockedCalculator

func NewLockedCalculator() LockedCalculator

NewLockedCalculator returns a new LockedCalculator

func (*LockedCalculator) CalculateUptime

func (lc *LockedCalculator) CalculateUptime(nodeID ids.NodeID, startTime time.Time, endTime time.Time, connected bool) (float64, time.Duration, error)

CalculateUptime calculates the uptime of a validator

func (*LockedCalculator) CalculateUptimePercent

func (lc *LockedCalculator) CalculateUptimePercent(nodeID ids.NodeID, startTime time.Time, endTime time.Time) (float64, error)

CalculateUptimePercent calculates the uptime percentage of a validator

func (*LockedCalculator) SetCalculator

func (lc *LockedCalculator) SetCalculator(bootstrapped *bool, chainLock *sync.RWMutex, calculator Calculator)

SetCalculator sets the calculator to use once the chain is bootstrapped

type Manager

type Manager interface {
	// StartTracking starts tracking a validator's uptime
	StartTracking(nodeID ids.NodeID) error

	// StopTracking stops tracking a validator's uptime
	StopTracking(nodeID ids.NodeID) error

	// Connect marks a validator as connected
	Connect(nodeID ids.NodeID) error

	// Disconnect marks a validator as disconnected
	Disconnect(nodeID ids.NodeID) error

	// CalculateUptime calculates a validator's uptime percentage
	CalculateUptime(nodeID ids.NodeID) (float64, error)

	// CalculateUptimePercent calculates uptime percentage for a duration
	CalculateUptimePercent(nodeID ids.NodeID, startTime time.Time) (float64, error)

	// GetTrackedValidators returns the set of tracked validators
	GetTrackedValidators() set.Set[ids.NodeID]
}

Manager calculates validator uptimes

type NoOpCalculator

type NoOpCalculator struct{}

NoOpCalculator is a no-op implementation of Calculator

func (NoOpCalculator) CalculateUptime

func (NoOpCalculator) CalculateUptime(nodeID ids.NodeID, startTime time.Time, endTime time.Time, connected bool) (float64, time.Duration, error)

CalculateUptime always returns 100% uptime

func (NoOpCalculator) CalculateUptimePercent

func (NoOpCalculator) CalculateUptimePercent(nodeID ids.NodeID, startTime time.Time, endTime time.Time) (float64, error)

CalculateUptimePercent always returns 100% uptime

type State

type State interface {
	// AddNode adds a node to track uptime for
	AddNode(nodeID ids.NodeID, startTime time.Time) error

	// RemoveNode removes a node from uptime tracking
	RemoveNode(nodeID ids.NodeID) error

	// IsConnected returns whether a node is connected
	IsConnected(nodeID ids.NodeID) bool

	// SetConnected sets a node's connected status
	SetConnected(nodeID ids.NodeID, connected bool) error

	// GetUptime returns a node's uptime percentage
	GetUptime(nodeID ids.NodeID) (float64, error)

	// GetUptimes returns all uptimes
	GetUptimes() (map[ids.NodeID]float64, error)

	// GetStartTime returns when a node started being tracked
	GetStartTime(nodeID ids.NodeID) (time.Time, error)
}

State represents the uptime state of validators

Directories

Path Synopsis
Package uptimemock is a generated GoMock package.
Package uptimemock is a generated GoMock package.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL