api

package
v0.1.9 Latest Latest
Warning

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

Go to latest
Published: Jun 5, 2023 License: MIT Imports: 14 Imported by: 6

Documentation

Index

Constants

View Source
const (
	RoleWeb       auth.Permission = "web"
	RoleCandidate auth.Permission = "candidate"
	RoleEdge      auth.Permission = "edge"
	RoleLocator   auth.Permission = "locator"
	RoleAdmin     auth.Permission = "admin" // Manage permissions
	RoleDefault   auth.Permission = "default"
)
View Source
const (
	EUnknown = iota + jsonrpc.FirstUserCode
)

Variables

View Source
var (
	SchedulerAPIVersion0 = newVer(1, 0, 0)

	CandidateAPIVersion0 = newVer(1, 0, 0)
	EdgeAPIVersion0      = newVer(1, 0, 0)
	LocationAPIVersion0  = newVer(1, 0, 0)
)

semver versions of the rpc api exposed

View Source
var ErrNotSupported = xerrors.New("method not supported")
View Source
var RPCErrors = jsonrpc.NewErrors()

Functions

func ErrorIsIn

func ErrorIsIn(err error, errorTypes []error) bool

func GetInternalStructs

func GetInternalStructs(in interface{}) []interface{}

GetInternalStructs extracts all pointers to 'Internal' sub-structs from the provided pointer to a proxy struct

func HasPerm

func HasPerm(ctx context.Context, defaultPerm auth.Permission, perms auth.Permission) bool

func PermissionedProxy

func PermissionedProxy(validPerms []auth.Permission, defaultPerms auth.Permission, in interface{}, out interface{})

func WithPerm

func WithPerm(ctx context.Context, perms []auth.Permission) context.Context

Types

type APIVersion

type APIVersion struct {
	Version string

	// APIVersion is a binary encoded semver version of the remote implementing
	// this api
	//
	// See APIVersion in build/version.go
	APIVersion Version

	// Seconds
	BlockDelay uint64
}

APIVersion provides various build-time information

func (APIVersion) String

func (v APIVersion) String() string

type AccessPoint

type AccessPoint struct {
	AreaID        string
	SchedulerURLs []string
}

AccessPoint represents an access point within an area, containing scheduler information.

type Asset

type Asset interface {
	// PullAsset pull the asset with given assetCID from specified sources
	PullAsset(ctx context.Context, assetCID string, sources []*types.CandidateDownloadInfo) error //perm:admin
	// DeleteAsset deletes the asset with given assetCID
	DeleteAsset(ctx context.Context, assetCID string) error //perm:admin
	// GetAssetStats retrieves the statistics of assets
	GetAssetStats(ctx context.Context) (*types.AssetStats, error) //perm:admin
	// GetCachingAssetInfo retrieves the information of assets that are currently being pulled
	GetPullingAssetInfo(ctx context.Context) (*types.InProgressAsset, error) //perm:admin
	// GetAssetProgresses retrieves the progress of assets with specified assetCIDs
	GetAssetProgresses(ctx context.Context, assetCIDs []string) (*types.PullResult, error) //perm:admin
}

Asset is an interface for asset manager

type AssetStruct

type AssetStruct struct {
	Internal struct {
		DeleteAsset func(p0 context.Context, p1 string) error `perm:"admin"`

		GetAssetProgresses func(p0 context.Context, p1 []string) (*types.PullResult, error) `perm:"admin"`

		GetAssetStats func(p0 context.Context) (*types.AssetStats, error) `perm:"admin"`

		GetPullingAssetInfo func(p0 context.Context) (*types.InProgressAsset, error) `perm:"admin"`

		PullAsset func(p0 context.Context, p1 string, p2 []*types.CandidateDownloadInfo) error `perm:"admin"`
	}
}

func (*AssetStruct) DeleteAsset

func (s *AssetStruct) DeleteAsset(p0 context.Context, p1 string) error

func (*AssetStruct) GetAssetProgresses

func (s *AssetStruct) GetAssetProgresses(p0 context.Context, p1 []string) (*types.PullResult, error)

func (*AssetStruct) GetAssetStats

func (s *AssetStruct) GetAssetStats(p0 context.Context) (*types.AssetStats, error)

func (*AssetStruct) GetPullingAssetInfo

func (s *AssetStruct) GetPullingAssetInfo(p0 context.Context) (*types.InProgressAsset, error)

func (*AssetStruct) PullAsset

func (s *AssetStruct) PullAsset(p0 context.Context, p1 string, p2 []*types.CandidateDownloadInfo) error

type AssetStub

type AssetStub struct {
}

func (*AssetStub) DeleteAsset

func (s *AssetStub) DeleteAsset(p0 context.Context, p1 string) error

func (*AssetStub) GetAssetProgresses

func (s *AssetStub) GetAssetProgresses(p0 context.Context, p1 []string) (*types.PullResult, error)

func (*AssetStub) GetAssetStats

func (s *AssetStub) GetAssetStats(p0 context.Context) (*types.AssetStats, error)

func (*AssetStub) GetPullingAssetInfo

func (s *AssetStub) GetPullingAssetInfo(p0 context.Context) (*types.InProgressAsset, error)

func (*AssetStub) PullAsset

func (s *AssetStub) PullAsset(p0 context.Context, p1 string, p2 []*types.CandidateDownloadInfo) error

type Candidate

type Candidate interface {
	Common
	Device
	Validation
	DataSync
	Asset
	WaitQuiet(ctx context.Context) error                                                                             //perm:admin
	GetBlocksWithAssetCID(ctx context.Context, assetCID string, randomSeed int64, randomCount int) ([]string, error) //perm:admin
	// GetExternalAddress retrieves the external address of the caller.
	GetExternalAddress(ctx context.Context) (string, error)                        //perm:default
	CheckNetworkConnectivity(ctx context.Context, network, targetURL string) error //perm:default
}

Candidate is an interface for candidate node

func PermissionedCandidateAPI

func PermissionedCandidateAPI(a Candidate) Candidate

type CandidateStruct

type CandidateStruct struct {
	CommonStruct

	DeviceStruct

	ValidationStruct

	DataSyncStruct

	AssetStruct

	Internal struct {
		CheckNetworkConnectivity func(p0 context.Context, p1 string, p2 string) error `perm:"default"`

		GetBlocksWithAssetCID func(p0 context.Context, p1 string, p2 int64, p3 int) ([]string, error) `perm:"admin"`

		GetExternalAddress func(p0 context.Context) (string, error) `perm:"default"`

		WaitQuiet func(p0 context.Context) error `perm:"admin"`
	}
}

func (*CandidateStruct) CheckNetworkConnectivity

func (s *CandidateStruct) CheckNetworkConnectivity(p0 context.Context, p1 string, p2 string) error

func (*CandidateStruct) GetBlocksWithAssetCID

func (s *CandidateStruct) GetBlocksWithAssetCID(p0 context.Context, p1 string, p2 int64, p3 int) ([]string, error)

func (*CandidateStruct) GetExternalAddress

func (s *CandidateStruct) GetExternalAddress(p0 context.Context) (string, error)

func (*CandidateStruct) WaitQuiet

func (s *CandidateStruct) WaitQuiet(p0 context.Context) error

type CandidateStub

func (*CandidateStub) CheckNetworkConnectivity

func (s *CandidateStub) CheckNetworkConnectivity(p0 context.Context, p1 string, p2 string) error

func (*CandidateStub) GetBlocksWithAssetCID

func (s *CandidateStub) GetBlocksWithAssetCID(p0 context.Context, p1 string, p2 int64, p3 int) ([]string, error)

func (*CandidateStub) GetExternalAddress

func (s *CandidateStub) GetExternalAddress(p0 context.Context) (string, error)

func (*CandidateStub) WaitQuiet

func (s *CandidateStub) WaitQuiet(p0 context.Context) error

type Common

type Common interface {

	// AuthVerify checks whether the specified token is valid and returns the list of permissions associated with it.
	AuthVerify(ctx context.Context, token string) ([]auth.Permission, error) //perm:default
	// AuthNew creates a new token with the specified list of permissions.
	AuthNew(ctx context.Context, perms []auth.Permission) (string, error) //perm:admin

	// LogList returns a list of all logs in the system.
	LogList(context.Context) ([]string, error) //perm:admin
	// LogSetLevel sets the log level of the specified logger.
	LogSetLevel(context.Context, string, string) error //perm:admin
	// LogAlerts returns list of all, active and inactive alerts tracked by the
	LogAlerts(ctx context.Context) ([]alerting.Alert, error) //perm:admin

	// Version provides information about API provider
	Version(context.Context) (APIVersion, error) //perm:default
	// Discover returns an OpenRPC document describing an RPC API.
	Discover(ctx context.Context) (types.OpenRPCDocument, error) //perm:admin
	// Shutdown trigger graceful shutdown
	Shutdown(context.Context) error //perm:admin
	// Session returns a UUID of api provider session
	Session(ctx context.Context) (uuid.UUID, error) //perm:edge,candidate

	// Closing jsonrpc closing
	Closing(context.Context) (<-chan struct{}, error) //perm:admin
}

Common is an interface for titan network

type CommonStruct

type CommonStruct struct {
	Internal struct {
		AuthNew func(p0 context.Context, p1 []auth.Permission) (string, error) `perm:"admin"`

		AuthVerify func(p0 context.Context, p1 string) ([]auth.Permission, error) `perm:"default"`

		Closing func(p0 context.Context) (<-chan struct{}, error) `perm:"admin"`

		Discover func(p0 context.Context) (types.OpenRPCDocument, error) `perm:"admin"`

		LogAlerts func(p0 context.Context) ([]alerting.Alert, error) `perm:"admin"`

		LogList func(p0 context.Context) ([]string, error) `perm:"admin"`

		LogSetLevel func(p0 context.Context, p1 string, p2 string) error `perm:"admin"`

		Session func(p0 context.Context) (uuid.UUID, error) `perm:"edge,candidate"`

		Shutdown func(p0 context.Context) error `perm:"admin"`

		Version func(p0 context.Context) (APIVersion, error) `perm:"default"`
	}
}

func (*CommonStruct) AuthNew

func (s *CommonStruct) AuthNew(p0 context.Context, p1 []auth.Permission) (string, error)

func (*CommonStruct) AuthVerify

func (s *CommonStruct) AuthVerify(p0 context.Context, p1 string) ([]auth.Permission, error)

func (*CommonStruct) Closing

func (s *CommonStruct) Closing(p0 context.Context) (<-chan struct{}, error)

func (*CommonStruct) Discover

func (*CommonStruct) LogAlerts

func (s *CommonStruct) LogAlerts(p0 context.Context) ([]alerting.Alert, error)

func (*CommonStruct) LogList

func (s *CommonStruct) LogList(p0 context.Context) ([]string, error)

func (*CommonStruct) LogSetLevel

func (s *CommonStruct) LogSetLevel(p0 context.Context, p1 string, p2 string) error

func (*CommonStruct) Session

func (s *CommonStruct) Session(p0 context.Context) (uuid.UUID, error)

func (*CommonStruct) Shutdown

func (s *CommonStruct) Shutdown(p0 context.Context) error

func (*CommonStruct) Version

func (s *CommonStruct) Version(p0 context.Context) (APIVersion, error)

type CommonStub

type CommonStub struct {
}

func (*CommonStub) AuthNew

func (s *CommonStub) AuthNew(p0 context.Context, p1 []auth.Permission) (string, error)

func (*CommonStub) AuthVerify

func (s *CommonStub) AuthVerify(p0 context.Context, p1 string) ([]auth.Permission, error)

func (*CommonStub) Closing

func (s *CommonStub) Closing(p0 context.Context) (<-chan struct{}, error)

func (*CommonStub) Discover

func (s *CommonStub) Discover(p0 context.Context) (types.OpenRPCDocument, error)

func (*CommonStub) LogAlerts

func (s *CommonStub) LogAlerts(p0 context.Context) ([]alerting.Alert, error)

func (*CommonStub) LogList

func (s *CommonStub) LogList(p0 context.Context) ([]string, error)

func (*CommonStub) LogSetLevel

func (s *CommonStub) LogSetLevel(p0 context.Context, p1 string, p2 string) error

func (*CommonStub) Session

func (s *CommonStub) Session(p0 context.Context) (uuid.UUID, error)

func (*CommonStub) Shutdown

func (s *CommonStub) Shutdown(p0 context.Context) error

func (*CommonStub) Version

func (s *CommonStub) Version(p0 context.Context) (APIVersion, error)

type DataSync

type DataSync interface {
	// CompareTopHash check asset if same as scheduler.
	// topHash is hash of all buckets
	CompareTopHash(ctx context.Context, topHash string) (bool, error) //perm:admin
	// CompareBucketHashes group asset in bucket, and compare single bucket hash
	// hashes are map of bucket, key is number of bucket, value is hash
	// return mismatch bucket number
	CompareBucketHashes(ctx context.Context, hashes map[uint32]string) ([]uint32, error) //perm:admin
}

DataSync sync scheduler asset to node

type DataSyncStruct

type DataSyncStruct struct {
	Internal struct {
		CompareBucketHashes func(p0 context.Context, p1 map[uint32]string) ([]uint32, error) `perm:"admin"`

		CompareTopHash func(p0 context.Context, p1 string) (bool, error) `perm:"admin"`
	}
}

func (*DataSyncStruct) CompareBucketHashes

func (s *DataSyncStruct) CompareBucketHashes(p0 context.Context, p1 map[uint32]string) ([]uint32, error)

func (*DataSyncStruct) CompareTopHash

func (s *DataSyncStruct) CompareTopHash(p0 context.Context, p1 string) (bool, error)

type DataSyncStub

type DataSyncStub struct {
}

func (*DataSyncStub) CompareBucketHashes

func (s *DataSyncStub) CompareBucketHashes(p0 context.Context, p1 map[uint32]string) ([]uint32, error)

func (*DataSyncStub) CompareTopHash

func (s *DataSyncStub) CompareTopHash(p0 context.Context, p1 string) (bool, error)

type Device

type Device interface {
	GetNodeInfo(ctx context.Context) (types.NodeInfo, error) //perm:admin
	GetNodeID(ctx context.Context) (string, error)           //perm:admin
}

Device is an interface for node

type DeviceStruct

type DeviceStruct struct {
	Internal struct {
		GetNodeID func(p0 context.Context) (string, error) `perm:"admin"`

		GetNodeInfo func(p0 context.Context) (types.NodeInfo, error) `perm:"admin"`
	}
}

func (*DeviceStruct) GetNodeID

func (s *DeviceStruct) GetNodeID(p0 context.Context) (string, error)

func (*DeviceStruct) GetNodeInfo

func (s *DeviceStruct) GetNodeInfo(p0 context.Context) (types.NodeInfo, error)

type DeviceStub

type DeviceStub struct {
}

func (*DeviceStub) GetNodeID

func (s *DeviceStub) GetNodeID(p0 context.Context) (string, error)

func (*DeviceStub) GetNodeInfo

func (s *DeviceStub) GetNodeInfo(p0 context.Context) (types.NodeInfo, error)

type Edge

type Edge interface {
	Common
	Device
	Validation
	DataSync
	Asset
	WaitQuiet(ctx context.Context) error //perm:admin
	// ExternalServiceAddress check service address with different candidate
	// if behind nat, service address maybe different
	ExternalServiceAddress(ctx context.Context, candidateURL string) (string, error) //perm:admin
	// UserNATTravel build connection for user
	UserNATPunch(ctx context.Context, userServiceAddress string, req *types.NatPunchReq) error //perm:admin
}

Edge is an interface for edge node

func PermissionedEdgeAPI

func PermissionedEdgeAPI(a Edge) Edge

type EdgeStruct

type EdgeStruct struct {
	CommonStruct

	DeviceStruct

	ValidationStruct

	DataSyncStruct

	AssetStruct

	Internal struct {
		ExternalServiceAddress func(p0 context.Context, p1 string) (string, error) `perm:"admin"`

		UserNATPunch func(p0 context.Context, p1 string, p2 *types.NatPunchReq) error `perm:"admin"`

		WaitQuiet func(p0 context.Context) error `perm:"admin"`
	}
}

func (*EdgeStruct) ExternalServiceAddress

func (s *EdgeStruct) ExternalServiceAddress(p0 context.Context, p1 string) (string, error)

func (*EdgeStruct) UserNATPunch

func (s *EdgeStruct) UserNATPunch(p0 context.Context, p1 string, p2 *types.NatPunchReq) error

func (*EdgeStruct) WaitQuiet

func (s *EdgeStruct) WaitQuiet(p0 context.Context) error

type EdgeStub

func (*EdgeStub) ExternalServiceAddress

func (s *EdgeStub) ExternalServiceAddress(p0 context.Context, p1 string) (string, error)

func (*EdgeStub) UserNATPunch

func (s *EdgeStub) UserNATPunch(p0 context.Context, p1 string, p2 *types.NatPunchReq) error

func (*EdgeStub) WaitQuiet

func (s *EdgeStub) WaitQuiet(p0 context.Context) error

type EdgeUpdateConfig

type EdgeUpdateConfig struct {
	NodeType    int       `db:"node_type"`
	AppName     string    `db:"app_name"`
	Version     Version   `db:"version"`
	DownloadURL string    `db:"download_url"`
	Hash        string    `db:"hash"`
	UpdateTime  time.Time `db:"update_time"`
}

EdgeUpdateInfo just update edge node NodeType include edge-updater and titan-edge

type ErrUnknown

type ErrUnknown struct{}

func (*ErrUnknown) Error

func (e *ErrUnknown) Error() string

type Locator

type Locator interface {
	Common
	// GetAccessPoints retrieves all access points associated with a node.
	GetAccessPoints(ctx context.Context, nodeID, areaID string) ([]string, error) //perm:default
	// user api
	// EdgeDownloadInfos retrieves download information for a content identifier (CID).
	EdgeDownloadInfos(ctx context.Context, cid string) ([]*types.EdgeDownloadInfoList, error) //perm:default
	// GetUserAccessPoint retrieves an access point for a user with a specified IP address.
	GetUserAccessPoint(ctx context.Context, userIP string) (*AccessPoint, error) //perm:default
}

Locator is an interface for locator services

func PermissionedLocationAPI

func PermissionedLocationAPI(a Locator) Locator

type LocatorStruct

type LocatorStruct struct {
	CommonStruct

	Internal struct {
		EdgeDownloadInfos func(p0 context.Context, p1 string) ([]*types.EdgeDownloadInfoList, error) `perm:"default"`

		GetAccessPoints func(p0 context.Context, p1 string, p2 string) ([]string, error) `perm:"default"`

		GetUserAccessPoint func(p0 context.Context, p1 string) (*AccessPoint, error) `perm:"default"`
	}
}

func (*LocatorStruct) EdgeDownloadInfos

func (s *LocatorStruct) EdgeDownloadInfos(p0 context.Context, p1 string) ([]*types.EdgeDownloadInfoList, error)

func (*LocatorStruct) GetAccessPoints

func (s *LocatorStruct) GetAccessPoints(p0 context.Context, p1 string, p2 string) ([]string, error)

func (*LocatorStruct) GetUserAccessPoint

func (s *LocatorStruct) GetUserAccessPoint(p0 context.Context, p1 string) (*AccessPoint, error)

type LocatorStub

type LocatorStub struct {
	CommonStub
}

func (*LocatorStub) EdgeDownloadInfos

func (s *LocatorStub) EdgeDownloadInfos(p0 context.Context, p1 string) ([]*types.EdgeDownloadInfoList, error)

func (*LocatorStub) GetAccessPoints

func (s *LocatorStub) GetAccessPoints(p0 context.Context, p1 string, p2 string) ([]string, error)

func (*LocatorStub) GetUserAccessPoint

func (s *LocatorStub) GetUserAccessPoint(p0 context.Context, p1 string) (*AccessPoint, error)

type LogFile

type LogFile struct {
	Name string
	Size int64
}

type Scheduler

type Scheduler interface {
	Common

	// Node-related methods
	// GetOnlineNodeCount returns the count of online nodes for a given node type
	GetOnlineNodeCount(ctx context.Context, nodeType types.NodeType) (int, error) //perm:web,admin
	// RegisterNode adds a new node to the scheduler with the specified public key, and node type , and returns node id
	RegisterNode(ctx context.Context, publicKey string, nodeType types.NodeType) (string, error) //perm:web,admin
	// UnregisterNode removes a node from the scheduler with the specified node ID
	UnregisterNode(ctx context.Context, nodeID string) error //perm:web,admin
	// UpdateNodePort updates the port for the node with the specified node
	UpdateNodePort(ctx context.Context, nodeID, port string) error //perm:web,admin
	// EdgeConnect edge node login to the scheduler
	EdgeConnect(ctx context.Context, opts *types.ConnectOptions) error //perm:edge
	// NodeValidationResult processes the validation result for a node
	NodeValidationResult(ctx context.Context, vr ValidationResult, sign string) error //perm:candidate
	// CandidateConnect candidate node login to the scheduler
	CandidateConnect(ctx context.Context, opts *types.ConnectOptions) error //perm:candidate
	// NodeRemoveAssetResult the result of an asset removal operation
	NodeRemoveAssetResult(ctx context.Context, resultInfo types.RemoveAssetResult) error //perm:edge,candidate
	// GetExternalAddress retrieves the external address of the caller.
	GetExternalAddress(ctx context.Context) (string, error) //perm:default
	// VerifyNodeAuthToken checks the authenticity of a node's authentication token and returns the associated permissions
	VerifyNodeAuthToken(ctx context.Context, token string) ([]auth.Permission, error) //perm:default
	// NodeLogin generates an authentication token for a node with the specified node ID and signature
	NodeLogin(ctx context.Context, nodeID, sign string) (string, error) //perm:default
	// GetNodeInfo get information for node
	GetNodeInfo(ctx context.Context, nodeID string) (types.NodeInfo, error) //perm:web,admin
	// GetNodeList retrieves a list of nodes with pagination using the specified cursor and count
	GetNodeList(ctx context.Context, cursor int, count int) (*types.ListNodesRsp, error) //perm:web,admin
	// GetAssetListForBucket retrieves a list of asset hashes for a bucket associated with the specified bucket ID (bucketID is hash code)
	GetAssetListForBucket(ctx context.Context, bucketID uint32) ([]string, error) //perm:edge,candidate
	// GetCandidateURLsForDetectNat Get the rpc url of the specified number of candidate nodes
	GetCandidateURLsForDetectNat(ctx context.Context) ([]string, error) //perm:default
	// GetEdgeExternalServiceAddress nat travel, get edge external addr with different candidate
	GetEdgeExternalServiceAddress(ctx context.Context, nodeID, candidateURL string) (string, error) //perm:edge
	// NatPunch nat punch between user and node
	NatPunch(ctx context.Context, target *types.NatPunchReq) error //perm:default
	// GetEdgeDownloadInfos retrieves download information for the edge with the asset with the specified CID.
	GetEdgeDownloadInfos(ctx context.Context, cid string) (*types.EdgeDownloadInfoList, error) //perm:default
	// GetCandidateDownloadInfos retrieves download information for the candidate with the asset with the specified CID.
	GetCandidateDownloadInfos(ctx context.Context, cid string) ([]*types.CandidateDownloadInfo, error) //perm:edge,candidate
	// NodeExists checks if the node with the specified ID exists.
	NodeExists(ctx context.Context, nodeID string) error //perm:web
	// NodeKeepalive
	NodeKeepalive(ctx context.Context) (uuid.UUID, error) //perm:edge,candidate

	// Asset-related methods
	// PullAsset Pull an asset based on the provided PullAssetReq structure.
	PullAsset(ctx context.Context, info *types.PullAssetReq) error //perm:admin
	// RemoveAssetRecord removes the asset record with the specified CID from the scheduler
	RemoveAssetRecord(ctx context.Context, cid string) error //perm:admin
	// RemoveAssetReplica deletes an asset replica with the specified CID and node from the scheduler
	RemoveAssetReplica(ctx context.Context, cid, nodeID string) error //perm:admin
	// GetAssetRecord retrieves the asset record with the specified CID
	GetAssetRecord(ctx context.Context, cid string) (*types.AssetRecord, error) //perm:web,admin
	// GetAssetRecords retrieves a list of asset records with pagination using the specified limit, offset, and states
	GetAssetRecords(ctx context.Context, limit, offset int, states []string, serverID dtypes.ServerID) ([]*types.AssetRecord, error) //perm:web,admin
	// RePullFailedAssets retries the pull process for a list of failed assets
	RePullFailedAssets(ctx context.Context, hashes []types.AssetHash) error //perm:admin
	// UpdateAssetExpiration updates the expiration time for an asset with the specified CID
	UpdateAssetExpiration(ctx context.Context, cid string, time time.Time) error //perm:admin
	// GetAssetReplicaInfos retrieves a list of asset replica information using the specified request parameters
	GetAssetReplicaInfos(ctx context.Context, req types.ListReplicaInfosReq) (*types.ListReplicaInfosRsp, error) //perm:web,admin
	// GetValidationResults retrieves a list of validation results with pagination using the specified time range, page number, and page size
	GetValidationResults(ctx context.Context, startTime, endTime time.Time, pageNumber, pageSize int) (*types.ListValidationResultRsp, error) //perm:web,admin
	// SubmitUserWorkloadReport submits report of workload for User Download asset
	SubmitUserWorkloadReport(ctx context.Context, r io.Reader) error //perm:default
	// SubmitNodeWorkloadReport submits report of workload for node provide Asset Download
	SubmitNodeWorkloadReport(ctx context.Context, r io.Reader) error //perm:edge,candidate

	// Server-related methods
	// GetSchedulerPublicKey retrieves the scheduler's public key in PEM format
	GetSchedulerPublicKey(ctx context.Context) (string, error) //perm:edge,candidate
	// TriggerElection starts a new election process
	TriggerElection(ctx context.Context) error //perm:admin
	// GetEdgeUpdateConfigs retrieves edge update configurations for different node types
	GetEdgeUpdateConfigs(ctx context.Context) (map[int]*EdgeUpdateConfig, error) //perm:edge
	// SetEdgeUpdateConfig updates the edge update configuration for a specific node type with the provided information
	SetEdgeUpdateConfig(ctx context.Context, info *EdgeUpdateConfig) error //perm:admin
	// DeleteEdgeUpdateConfig deletes the edge update configuration for the specified node type
	DeleteEdgeUpdateConfig(ctx context.Context, nodeType int) error //perm:admin
	// GetValidationInfo get information related to validation and election
	GetValidationInfo(ctx context.Context) (*types.ValidationInfo, error) //perm:web,admin
	// GetAssetStatistics get asset related statistics information
	GetAssetStatistics(ctx context.Context) (*types.AssetStatistics, error) //perm:web,admin
}

Scheduler is an interface for scheduler

func PermissionedSchedulerAPI

func PermissionedSchedulerAPI(a Scheduler) Scheduler

type SchedulerStruct

type SchedulerStruct struct {
	CommonStruct

	Internal struct {
		CandidateConnect func(p0 context.Context, p1 *types.ConnectOptions) error `perm:"candidate"`

		DeleteEdgeUpdateConfig func(p0 context.Context, p1 int) error `perm:"admin"`

		EdgeConnect func(p0 context.Context, p1 *types.ConnectOptions) error `perm:"edge"`

		GetAssetListForBucket func(p0 context.Context, p1 uint32) ([]string, error) `perm:"edge,candidate"`

		GetAssetRecord func(p0 context.Context, p1 string) (*types.AssetRecord, error) `perm:"web,admin"`

		GetAssetRecords func(p0 context.Context, p1 int, p2 int, p3 []string, p4 dtypes.ServerID) ([]*types.AssetRecord, error) `perm:"web,admin"`

		GetAssetReplicaInfos func(p0 context.Context, p1 types.ListReplicaInfosReq) (*types.ListReplicaInfosRsp, error) `perm:"web,admin"`

		GetAssetStatistics func(p0 context.Context) (*types.AssetStatistics, error) `perm:"web,admin"`

		GetCandidateDownloadInfos func(p0 context.Context, p1 string) ([]*types.CandidateDownloadInfo, error) `perm:"edge,candidate"`

		GetCandidateURLsForDetectNat func(p0 context.Context) ([]string, error) `perm:"default"`

		GetEdgeDownloadInfos func(p0 context.Context, p1 string) (*types.EdgeDownloadInfoList, error) `perm:"default"`

		GetEdgeExternalServiceAddress func(p0 context.Context, p1 string, p2 string) (string, error) `perm:"edge"`

		GetEdgeUpdateConfigs func(p0 context.Context) (map[int]*EdgeUpdateConfig, error) `perm:"edge"`

		GetExternalAddress func(p0 context.Context) (string, error) `perm:"default"`

		GetNodeInfo func(p0 context.Context, p1 string) (types.NodeInfo, error) `perm:"web,admin"`

		GetNodeList func(p0 context.Context, p1 int, p2 int) (*types.ListNodesRsp, error) `perm:"web,admin"`

		GetOnlineNodeCount func(p0 context.Context, p1 types.NodeType) (int, error) `perm:"web,admin"`

		GetSchedulerPublicKey func(p0 context.Context) (string, error) `perm:"edge,candidate"`

		GetValidationInfo func(p0 context.Context) (*types.ValidationInfo, error) `perm:"web,admin"`

		GetValidationResults func(p0 context.Context, p1 time.Time, p2 time.Time, p3 int, p4 int) (*types.ListValidationResultRsp, error) `perm:"web,admin"`

		NatPunch func(p0 context.Context, p1 *types.NatPunchReq) error `perm:"default"`

		NodeExists func(p0 context.Context, p1 string) error `perm:"web"`

		NodeKeepalive func(p0 context.Context) (uuid.UUID, error) `perm:"edge,candidate"`

		NodeLogin func(p0 context.Context, p1 string, p2 string) (string, error) `perm:"default"`

		NodeRemoveAssetResult func(p0 context.Context, p1 types.RemoveAssetResult) error `perm:"edge,candidate"`

		NodeValidationResult func(p0 context.Context, p1 ValidationResult, p2 string) error `perm:"candidate"`

		PullAsset func(p0 context.Context, p1 *types.PullAssetReq) error `perm:"admin"`

		RePullFailedAssets func(p0 context.Context, p1 []types.AssetHash) error `perm:"admin"`

		RegisterNode func(p0 context.Context, p1 string, p2 types.NodeType) (string, error) `perm:"web,admin"`

		RemoveAssetRecord func(p0 context.Context, p1 string) error `perm:"admin"`

		RemoveAssetReplica func(p0 context.Context, p1 string, p2 string) error `perm:"admin"`

		SetEdgeUpdateConfig func(p0 context.Context, p1 *EdgeUpdateConfig) error `perm:"admin"`

		SubmitNodeWorkloadReport func(p0 context.Context, p1 io.Reader) error `perm:"edge,candidate"`

		SubmitUserWorkloadReport func(p0 context.Context, p1 io.Reader) error `perm:"default"`

		TriggerElection func(p0 context.Context) error `perm:"admin"`

		UnregisterNode func(p0 context.Context, p1 string) error `perm:"web,admin"`

		UpdateAssetExpiration func(p0 context.Context, p1 string, p2 time.Time) error `perm:"admin"`

		UpdateNodePort func(p0 context.Context, p1 string, p2 string) error `perm:"web,admin"`

		VerifyNodeAuthToken func(p0 context.Context, p1 string) ([]auth.Permission, error) `perm:"default"`
	}
}

func (*SchedulerStruct) CandidateConnect

func (s *SchedulerStruct) CandidateConnect(p0 context.Context, p1 *types.ConnectOptions) error

func (*SchedulerStruct) DeleteEdgeUpdateConfig

func (s *SchedulerStruct) DeleteEdgeUpdateConfig(p0 context.Context, p1 int) error

func (*SchedulerStruct) EdgeConnect

func (s *SchedulerStruct) EdgeConnect(p0 context.Context, p1 *types.ConnectOptions) error

func (*SchedulerStruct) GetAssetListForBucket

func (s *SchedulerStruct) GetAssetListForBucket(p0 context.Context, p1 uint32) ([]string, error)

func (*SchedulerStruct) GetAssetRecord

func (s *SchedulerStruct) GetAssetRecord(p0 context.Context, p1 string) (*types.AssetRecord, error)

func (*SchedulerStruct) GetAssetRecords

func (s *SchedulerStruct) GetAssetRecords(p0 context.Context, p1 int, p2 int, p3 []string, p4 dtypes.ServerID) ([]*types.AssetRecord, error)

func (*SchedulerStruct) GetAssetReplicaInfos

func (*SchedulerStruct) GetAssetStatistics

func (s *SchedulerStruct) GetAssetStatistics(p0 context.Context) (*types.AssetStatistics, error)

func (*SchedulerStruct) GetCandidateDownloadInfos

func (s *SchedulerStruct) GetCandidateDownloadInfos(p0 context.Context, p1 string) ([]*types.CandidateDownloadInfo, error)

func (*SchedulerStruct) GetCandidateURLsForDetectNat

func (s *SchedulerStruct) GetCandidateURLsForDetectNat(p0 context.Context) ([]string, error)

func (*SchedulerStruct) GetEdgeDownloadInfos

func (s *SchedulerStruct) GetEdgeDownloadInfos(p0 context.Context, p1 string) (*types.EdgeDownloadInfoList, error)

func (*SchedulerStruct) GetEdgeExternalServiceAddress

func (s *SchedulerStruct) GetEdgeExternalServiceAddress(p0 context.Context, p1 string, p2 string) (string, error)

func (*SchedulerStruct) GetEdgeUpdateConfigs

func (s *SchedulerStruct) GetEdgeUpdateConfigs(p0 context.Context) (map[int]*EdgeUpdateConfig, error)

func (*SchedulerStruct) GetExternalAddress

func (s *SchedulerStruct) GetExternalAddress(p0 context.Context) (string, error)

func (*SchedulerStruct) GetNodeInfo

func (s *SchedulerStruct) GetNodeInfo(p0 context.Context, p1 string) (types.NodeInfo, error)

func (*SchedulerStruct) GetNodeList

func (s *SchedulerStruct) GetNodeList(p0 context.Context, p1 int, p2 int) (*types.ListNodesRsp, error)

func (*SchedulerStruct) GetOnlineNodeCount

func (s *SchedulerStruct) GetOnlineNodeCount(p0 context.Context, p1 types.NodeType) (int, error)

func (*SchedulerStruct) GetSchedulerPublicKey

func (s *SchedulerStruct) GetSchedulerPublicKey(p0 context.Context) (string, error)

func (*SchedulerStruct) GetValidationInfo

func (s *SchedulerStruct) GetValidationInfo(p0 context.Context) (*types.ValidationInfo, error)

func (*SchedulerStruct) GetValidationResults

func (s *SchedulerStruct) GetValidationResults(p0 context.Context, p1 time.Time, p2 time.Time, p3 int, p4 int) (*types.ListValidationResultRsp, error)

func (*SchedulerStruct) NatPunch

func (s *SchedulerStruct) NatPunch(p0 context.Context, p1 *types.NatPunchReq) error

func (*SchedulerStruct) NodeExists

func (s *SchedulerStruct) NodeExists(p0 context.Context, p1 string) error

func (*SchedulerStruct) NodeKeepalive

func (s *SchedulerStruct) NodeKeepalive(p0 context.Context) (uuid.UUID, error)

func (*SchedulerStruct) NodeLogin

func (s *SchedulerStruct) NodeLogin(p0 context.Context, p1 string, p2 string) (string, error)

func (*SchedulerStruct) NodeRemoveAssetResult

func (s *SchedulerStruct) NodeRemoveAssetResult(p0 context.Context, p1 types.RemoveAssetResult) error

func (*SchedulerStruct) NodeValidationResult

func (s *SchedulerStruct) NodeValidationResult(p0 context.Context, p1 ValidationResult, p2 string) error

func (*SchedulerStruct) PullAsset

func (s *SchedulerStruct) PullAsset(p0 context.Context, p1 *types.PullAssetReq) error

func (*SchedulerStruct) RePullFailedAssets

func (s *SchedulerStruct) RePullFailedAssets(p0 context.Context, p1 []types.AssetHash) error

func (*SchedulerStruct) RegisterNode

func (s *SchedulerStruct) RegisterNode(p0 context.Context, p1 string, p2 types.NodeType) (string, error)

func (*SchedulerStruct) RemoveAssetRecord

func (s *SchedulerStruct) RemoveAssetRecord(p0 context.Context, p1 string) error

func (*SchedulerStruct) RemoveAssetReplica

func (s *SchedulerStruct) RemoveAssetReplica(p0 context.Context, p1 string, p2 string) error

func (*SchedulerStruct) SetEdgeUpdateConfig

func (s *SchedulerStruct) SetEdgeUpdateConfig(p0 context.Context, p1 *EdgeUpdateConfig) error

func (*SchedulerStruct) SubmitNodeWorkloadReport

func (s *SchedulerStruct) SubmitNodeWorkloadReport(p0 context.Context, p1 io.Reader) error

func (*SchedulerStruct) SubmitUserWorkloadReport

func (s *SchedulerStruct) SubmitUserWorkloadReport(p0 context.Context, p1 io.Reader) error

func (*SchedulerStruct) TriggerElection

func (s *SchedulerStruct) TriggerElection(p0 context.Context) error

func (*SchedulerStruct) UnregisterNode

func (s *SchedulerStruct) UnregisterNode(p0 context.Context, p1 string) error

func (*SchedulerStruct) UpdateAssetExpiration

func (s *SchedulerStruct) UpdateAssetExpiration(p0 context.Context, p1 string, p2 time.Time) error

func (*SchedulerStruct) UpdateNodePort

func (s *SchedulerStruct) UpdateNodePort(p0 context.Context, p1 string, p2 string) error

func (*SchedulerStruct) VerifyNodeAuthToken

func (s *SchedulerStruct) VerifyNodeAuthToken(p0 context.Context, p1 string) ([]auth.Permission, error)

type SchedulerStub

type SchedulerStub struct {
	CommonStub
}

func (*SchedulerStub) CandidateConnect

func (s *SchedulerStub) CandidateConnect(p0 context.Context, p1 *types.ConnectOptions) error

func (*SchedulerStub) DeleteEdgeUpdateConfig

func (s *SchedulerStub) DeleteEdgeUpdateConfig(p0 context.Context, p1 int) error

func (*SchedulerStub) EdgeConnect

func (s *SchedulerStub) EdgeConnect(p0 context.Context, p1 *types.ConnectOptions) error

func (*SchedulerStub) GetAssetListForBucket

func (s *SchedulerStub) GetAssetListForBucket(p0 context.Context, p1 uint32) ([]string, error)

func (*SchedulerStub) GetAssetRecord

func (s *SchedulerStub) GetAssetRecord(p0 context.Context, p1 string) (*types.AssetRecord, error)

func (*SchedulerStub) GetAssetRecords

func (s *SchedulerStub) GetAssetRecords(p0 context.Context, p1 int, p2 int, p3 []string, p4 dtypes.ServerID) ([]*types.AssetRecord, error)

func (*SchedulerStub) GetAssetReplicaInfos

func (*SchedulerStub) GetAssetStatistics

func (s *SchedulerStub) GetAssetStatistics(p0 context.Context) (*types.AssetStatistics, error)

func (*SchedulerStub) GetCandidateDownloadInfos

func (s *SchedulerStub) GetCandidateDownloadInfos(p0 context.Context, p1 string) ([]*types.CandidateDownloadInfo, error)

func (*SchedulerStub) GetCandidateURLsForDetectNat

func (s *SchedulerStub) GetCandidateURLsForDetectNat(p0 context.Context) ([]string, error)

func (*SchedulerStub) GetEdgeDownloadInfos

func (s *SchedulerStub) GetEdgeDownloadInfos(p0 context.Context, p1 string) (*types.EdgeDownloadInfoList, error)

func (*SchedulerStub) GetEdgeExternalServiceAddress

func (s *SchedulerStub) GetEdgeExternalServiceAddress(p0 context.Context, p1 string, p2 string) (string, error)

func (*SchedulerStub) GetEdgeUpdateConfigs

func (s *SchedulerStub) GetEdgeUpdateConfigs(p0 context.Context) (map[int]*EdgeUpdateConfig, error)

func (*SchedulerStub) GetExternalAddress

func (s *SchedulerStub) GetExternalAddress(p0 context.Context) (string, error)

func (*SchedulerStub) GetNodeInfo

func (s *SchedulerStub) GetNodeInfo(p0 context.Context, p1 string) (types.NodeInfo, error)

func (*SchedulerStub) GetNodeList

func (s *SchedulerStub) GetNodeList(p0 context.Context, p1 int, p2 int) (*types.ListNodesRsp, error)

func (*SchedulerStub) GetOnlineNodeCount

func (s *SchedulerStub) GetOnlineNodeCount(p0 context.Context, p1 types.NodeType) (int, error)

func (*SchedulerStub) GetSchedulerPublicKey

func (s *SchedulerStub) GetSchedulerPublicKey(p0 context.Context) (string, error)

func (*SchedulerStub) GetValidationInfo

func (s *SchedulerStub) GetValidationInfo(p0 context.Context) (*types.ValidationInfo, error)

func (*SchedulerStub) GetValidationResults

func (s *SchedulerStub) GetValidationResults(p0 context.Context, p1 time.Time, p2 time.Time, p3 int, p4 int) (*types.ListValidationResultRsp, error)

func (*SchedulerStub) NatPunch

func (s *SchedulerStub) NatPunch(p0 context.Context, p1 *types.NatPunchReq) error

func (*SchedulerStub) NodeExists

func (s *SchedulerStub) NodeExists(p0 context.Context, p1 string) error

func (*SchedulerStub) NodeKeepalive

func (s *SchedulerStub) NodeKeepalive(p0 context.Context) (uuid.UUID, error)

func (*SchedulerStub) NodeLogin

func (s *SchedulerStub) NodeLogin(p0 context.Context, p1 string, p2 string) (string, error)

func (*SchedulerStub) NodeRemoveAssetResult

func (s *SchedulerStub) NodeRemoveAssetResult(p0 context.Context, p1 types.RemoveAssetResult) error

func (*SchedulerStub) NodeValidationResult

func (s *SchedulerStub) NodeValidationResult(p0 context.Context, p1 ValidationResult, p2 string) error

func (*SchedulerStub) PullAsset

func (s *SchedulerStub) PullAsset(p0 context.Context, p1 *types.PullAssetReq) error

func (*SchedulerStub) RePullFailedAssets

func (s *SchedulerStub) RePullFailedAssets(p0 context.Context, p1 []types.AssetHash) error

func (*SchedulerStub) RegisterNode

func (s *SchedulerStub) RegisterNode(p0 context.Context, p1 string, p2 types.NodeType) (string, error)

func (*SchedulerStub) RemoveAssetRecord

func (s *SchedulerStub) RemoveAssetRecord(p0 context.Context, p1 string) error

func (*SchedulerStub) RemoveAssetReplica

func (s *SchedulerStub) RemoveAssetReplica(p0 context.Context, p1 string, p2 string) error

func (*SchedulerStub) SetEdgeUpdateConfig

func (s *SchedulerStub) SetEdgeUpdateConfig(p0 context.Context, p1 *EdgeUpdateConfig) error

func (*SchedulerStub) SubmitNodeWorkloadReport

func (s *SchedulerStub) SubmitNodeWorkloadReport(p0 context.Context, p1 io.Reader) error

func (*SchedulerStub) SubmitUserWorkloadReport

func (s *SchedulerStub) SubmitUserWorkloadReport(p0 context.Context, p1 io.Reader) error

func (*SchedulerStub) TriggerElection

func (s *SchedulerStub) TriggerElection(p0 context.Context) error

func (*SchedulerStub) UnregisterNode

func (s *SchedulerStub) UnregisterNode(p0 context.Context, p1 string) error

func (*SchedulerStub) UpdateAssetExpiration

func (s *SchedulerStub) UpdateAssetExpiration(p0 context.Context, p1 string, p2 time.Time) error

func (*SchedulerStub) UpdateNodePort

func (s *SchedulerStub) UpdateNodePort(p0 context.Context, p1 string, p2 string) error

func (*SchedulerStub) VerifyNodeAuthToken

func (s *SchedulerStub) VerifyNodeAuthToken(p0 context.Context, p1 string) ([]auth.Permission, error)

type TCPMsgType

type TCPMsgType int

TODO: new tcp package, add these to tcp package candidate use tcp server to validate edge

const (
	TCPMsgTypeNodeID TCPMsgType = iota + 1
	TCPMsgTypeBlock
	TCPMsgTypeCancel
)

type ValidateReq

type ValidateReq struct {
	// TCPSrvAddr Candidate tcp server address
	TCPSrvAddr string
	RandomSeed int64
	Duration   int
}

ValidateReq represents the request parameters for validation

type Validation

type Validation interface {
	// ExecuteValidation check node asset and bandwidth
	ExecuteValidation(ctx context.Context, req *ValidateReq) error //perm:admin
}

Validation is an interface for validate-related operations

type ValidationResult

type ValidationResult struct {
	Validator string
	CID       string
	// verification canceled due to download
	IsCancel  bool
	NodeID    string
	Bandwidth float64
	// seconds duration
	CostTime  int64
	IsTimeout bool

	// key is random index
	// values is cid
	Cids []string
	// The number of random for validator
	RandomCount int
}

ValidationResult node Validation result

type ValidationStruct

type ValidationStruct struct {
	Internal struct {
		ExecuteValidation func(p0 context.Context, p1 *ValidateReq) error `perm:"admin"`
	}
}

func (*ValidationStruct) ExecuteValidation

func (s *ValidationStruct) ExecuteValidation(p0 context.Context, p1 *ValidateReq) error

type ValidationStub

type ValidationStub struct {
}

func (*ValidationStub) ExecuteValidation

func (s *ValidationStub) ExecuteValidation(p0 context.Context, p1 *ValidateReq) error

type Version

type Version uint32

func VersionForType

func VersionForType(nodeType types.NodeType) (Version, error)

func (Version) EqMajorMinor

func (ve Version) EqMajorMinor(v2 Version) bool

func (Version) Ints

func (ve Version) Ints() (uint32, uint32, uint32)

Ints returns (major, minor, patch) versions

func (Version) String

func (ve Version) String() string

Directories

Path Synopsis

Jump to

Keyboard shortcuts

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