node

package
v0.1.18 Latest Latest
Warning

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

Go to latest
Published: Apr 29, 2024 License: MIT Imports: 24 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type API

type API struct {
	// common api
	api.Common
	api.Device
	api.Validation
	api.DataSync
	api.Asset
	WaitQuiet func(ctx context.Context) error
	// edge api
	ExternalServiceAddress func(ctx context.Context, candidateURL string) (string, error)
	UserNATPunch           func(ctx context.Context, sourceURL string, req *types.NatPunchReq) error
	// candidate api
	GetBlocksOfAsset        func(ctx context.Context, assetCID string, randomSeed int64, randomCount int) ([]string, error)
	CheckNetworkConnectable func(ctx context.Context, network, targetURL string) (bool, error)
	GetMinioConfig          func(ctx context.Context) (*types.MinioConfig, error)
}

API represents the node API

func APIFromCandidate

func APIFromCandidate(api api.Candidate) *API

APIFromCandidate creates a new API from a Candidate API

func APIFromEdge

func APIFromEdge(api api.Edge) *API

APIFromEdge creates a new API from an Edge API

type Manager

type Manager struct {
	Edges      int // online edge node count
	Candidates int // online candidate node count

	*db.SQLDB
	*rsa.PrivateKey // scheduler privateKey
	dtypes.ServerID // scheduler server id

	TotalNetworkEdges int // Number of edge nodes in the entire network (including those on other schedulers)
	// contains filtered or unexported fields
}

Manager is the node manager responsible for managing the online nodes

func NewManager

func NewManager(sdb *db.SQLDB, serverID dtypes.ServerID, pk *rsa.PrivateKey, pb *pubsub.PubSub, config dtypes.GetSchedulerConfigFunc, ec *etcdcli.Client) *Manager

NewManager creates a new instance of the node manager

func (*Manager) CheckIPExist added in v0.1.14

func (m *Manager) CheckIPExist(ip string) bool

func (*Manager) DistributeNodeWeight added in v0.1.11

func (m *Manager) DistributeNodeWeight(node *Node)

DistributeNodeWeight Distribute Node Weight

func (*Manager) GetAllCandidateNodes

func (m *Manager) GetAllCandidateNodes() ([]string, []*Node)

GetAllCandidateNodes Get all valid candidate nodes

func (*Manager) GetAllEdgeNode added in v0.1.10

func (m *Manager) GetAllEdgeNode() []*Node

GetAllEdgeNode load all edge node

func (*Manager) GetAllNodes added in v0.1.18

func (m *Manager) GetAllNodes() []*Node

GetAllNodes Get all valid candidate and edge nodes

func (*Manager) GetCandidateNode

func (m *Manager) GetCandidateNode(nodeID string) *Node

GetCandidateNode retrieves a candidate node with the given node ID

func (*Manager) GetCandidateNodes

func (m *Manager) GetCandidateNodes(num int, filterValidators bool) []*Node

GetCandidateNodes return n candidate node

func (*Manager) GetEdgeNode

func (m *Manager) GetEdgeNode(nodeID string) *Node

GetEdgeNode retrieves an edge node with the given node ID

func (*Manager) GetNode

func (m *Manager) GetNode(nodeID string) *Node

GetNode retrieves a node with the given node ID

func (*Manager) GetNodeBePullProfitDetails added in v0.1.18

func (m *Manager) GetNodeBePullProfitDetails(node *Node, size float64, note string) *types.ProfitDetails

func (*Manager) GetNodeOfIP added in v0.1.15

func (m *Manager) GetNodeOfIP(ip string) []string

func (*Manager) GetNodePullProfitDetails added in v0.1.18

func (m *Manager) GetNodePullProfitDetails(node *Node, size float64, note string) *types.ProfitDetails

func (*Manager) GetNodeValidatableProfitDetails added in v0.1.18

func (m *Manager) GetNodeValidatableProfitDetails(node *Node, size float64) *types.ProfitDetails

func (*Manager) GetNodeValidatorProfitDetails added in v0.1.18

func (m *Manager) GetNodeValidatorProfitDetails(node *Node, size float64) *types.ProfitDetails

func (*Manager) GetOnlineNodeCount

func (m *Manager) GetOnlineNodeCount(nodeType types.NodeType) int

GetOnlineNodeCount returns online node count of the given type

func (*Manager) GetRandomCandidates added in v0.1.18

func (m *Manager) GetRandomCandidates(count int) map[string]int

GetRandomCandidates returns a random candidate node

func (*Manager) GetRandomEdges added in v0.1.18

func (m *Manager) GetRandomEdges(count int) map[string]int

GetRandomEdges returns a random edge node

func (*Manager) NodeCalculateMCx added in v0.1.18

func (m *Manager) NodeCalculateMCx() float64

NodeCalculateMCx

func (*Manager) NodeOnline

func (m *Manager) NodeOnline(node *Node, info *types.NodeInfo) error

NodeOnline registers a node as online

func (*Manager) RemoveNodeIP added in v0.1.13

func (m *Manager) RemoveNodeIP(nodeID, ip string)

func (*Manager) RepayNodeWeight added in v0.1.11

func (m *Manager) RepayNodeWeight(node *Node)

RepayNodeWeight Repay Node Weight

func (*Manager) StoreNodeIP added in v0.1.18

func (m *Manager) StoreNodeIP(nodeID, ip string) bool

func (*Manager) UpdateNodeBandwidths added in v0.1.11

func (m *Manager) UpdateNodeBandwidths(nodeID string, bandwidthDown, bandwidthUp int64)

UpdateNodeBandwidths update node bandwidthDown and bandwidthUp

func (*Manager) UpdateNodeDiskUsage added in v0.1.13

func (m *Manager) UpdateNodeDiskUsage(nodeID string, diskUsage float64)

type Node

type Node struct {
	NodeID string

	*API
	jsonrpc.ClientCloser

	// node info
	PublicKey   *rsa.PublicKey
	RemoteAddr  string
	TCPPort     int
	ExternalURL string

	NATType        types.NatType
	CPUUsage       float64
	MemoryUsage    float64
	DiskUsage      float64
	TitanDiskUsage float64

	Type          types.NodeType
	PortMapping   string
	BandwidthDown int64
	BandwidthUp   int64

	DeactivateTime int64

	IsPrivateMinioOnly bool
	IsStorageOnly      bool

	ExternalIP         string
	IncomeIncr         float64
	DiskSpace          float64
	AvailableDiskSpace float64

	IsNewVersion bool
	// contains filtered or unexported fields
}

Node represents an Edge or Candidate node

func New

func New() *Node

New creates a new node

func (*Node) ConnectRPC

func (n *Node) ConnectRPC(transport *quic.Transport, addr string, nodeType types.NodeType) error

ConnectRPC connects to the node RPC

func (*Node) DiskEnough added in v0.1.14

func (n *Node) DiskEnough(size float64) bool

func (*Node) DownloadAddr

func (n *Node) DownloadAddr() string

DownloadAddr returns the download address of the node

func (*Node) GetNumberOfIPChanges added in v0.1.18

func (n *Node) GetNumberOfIPChanges() (int64, time.Time)

func (*Node) GetToken added in v0.1.13

func (n *Node) GetToken() string

GetToken get the token of the node

func (*Node) IsAbnormal added in v0.1.11

func (n *Node) IsAbnormal() bool

IsAbnormal is node abnormal

func (*Node) LastRequestTime

func (n *Node) LastRequestTime() time.Time

LastRequestTime returns the last request time of the node

func (*Node) RPCURL

func (n *Node) RPCURL() string

RPCURL returns the rpc url of the node

func (*Node) SelectWeights added in v0.1.10

func (n *Node) SelectWeights() []int

SelectWeights get node select weights

func (*Node) SetLastRequestTime

func (n *Node) SetLastRequestTime(t time.Time)

SetLastRequestTime sets the last request time of the node

func (*Node) SetNumberOfIPChanges added in v0.1.18

func (n *Node) SetNumberOfIPChanges(count int64)

func (*Node) SetToken

func (n *Node) SetToken(t string)

SetToken sets the token of the node

func (*Node) TCPAddr

func (n *Node) TCPAddr() string

TCPAddr returns the tcp address of the node

func (*Node) Token

func (n *Node) Token(cid, clientID string, titanRsa *titanrsa.Rsa, privateKey *rsa.PrivateKey) (*types.Token, *types.TokenPayload, error)

Token returns the token of the node

Jump to

Keyboard shortcuts

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