Help us shape the future of Go! Take the 2026 Go Developer Survey

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