resource

package
v2.1.38 Latest Latest
Warning

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

Go to latest
Published: Mar 28, 2024 License: Apache-2.0 Imports: 44 Imported by: 0

Documentation

Overview

Code generated by MockGen. DO NOT EDIT. Source: host_manager.go

Generated by this command:

mockgen -destination host_manager_mock.go -source host_manager.go -package resource

Package resource is a generated GoMock package.

Code generated by MockGen. DO NOT EDIT. Source: peer_manager.go

Generated by this command:

mockgen -destination peer_manager_mock.go -source peer_manager.go -package resource

Package resource is a generated GoMock package.

Code generated by MockGen. DO NOT EDIT. Source: resource.go

Generated by this command:

mockgen -destination resource_mock.go -source resource.go -package resource

Package resource is a generated GoMock package.

Code generated by MockGen. DO NOT EDIT. Source: seed_peer_client.go

Generated by this command:

mockgen -destination seed_peer_client_mock.go -source seed_peer_client.go -package resource

Package resource is a generated GoMock package.

Code generated by MockGen. DO NOT EDIT. Source: seed_peer.go

Generated by this command:

mockgen -destination seed_peer_mock.go -source seed_peer.go -package resource

Package resource is a generated GoMock package.

Code generated by MockGen. DO NOT EDIT. Source: task_manager.go

Generated by this command:

mockgen -destination task_manager_mock.go -source task_manager.go -package resource

Package resource is a generated GoMock package.

Index

Constants

View Source
const (
	// Peer has been created but did not start running.
	PeerStatePending = "Pending"

	// Peer successfully registered as empty scope size.
	PeerStateReceivedEmpty = "ReceivedEmpty"

	// Peer successfully registered as tiny scope size.
	PeerStateReceivedTiny = "ReceivedTiny"

	// Peer successfully registered as small scope size.
	PeerStateReceivedSmall = "ReceivedSmall"

	// Peer successfully registered as normal scope size.
	PeerStateReceivedNormal = "ReceivedNormal"

	// Peer is downloading resources from peer.
	PeerStateRunning = "Running"

	// Peer is downloading resources from back-to-source.
	PeerStateBackToSource = "BackToSource"

	// Peer has been downloaded successfully.
	PeerStateSucceeded = "Succeeded"

	// Peer has been downloaded failed.
	PeerStateFailed = "Failed"

	// Peer has been left.
	PeerStateLeave = "Leave"
)
View Source
const (
	// Peer is registered as empty scope size.
	PeerEventRegisterEmpty = "RegisterEmpty"

	// Peer is registered as tiny scope size.
	PeerEventRegisterTiny = "RegisterTiny"

	// Peer is registered as small scope size.
	PeerEventRegisterSmall = "RegisterSmall"

	// Peer is registered as normal scope size.
	PeerEventRegisterNormal = "RegisterNormal"

	// Peer is downloading.
	PeerEventDownload = "Download"

	// Peer is downloading back-to-source.
	PeerEventDownloadBackToSource = "DownloadBackToSource"

	// Peer downloaded successfully.
	PeerEventDownloadSucceeded = "DownloadSucceeded"

	// Peer downloaded failed.
	PeerEventDownloadFailed = "DownloadFailed"

	// Peer leaves.
	PeerEventLeave = "Leave"
)
View Source
const (
	// Tiny file size is 128 bytes.
	TinyFileSize = 128

	// Empty file size is 0 bytes.
	EmptyFileSize = 0
)
View Source
const (
	// Peer failure limit in task.
	FailedPeerCountLimit = 200

	// Peer count limit for task.
	PeerCountLimitForTask = 300
)
View Source
const (
	// Task has been created but did not start running.
	TaskStatePending = "Pending"

	// Task is downloading resources from seed peer or back-to-source.
	TaskStateRunning = "Running"

	// Task has been downloaded successfully.
	TaskStateSucceeded = "Succeeded"

	// Task has been downloaded failed.
	TaskStateFailed = "Failed"

	// Task has no peers.
	TaskStateLeave = "Leave"
)
View Source
const (
	// Task is downloading.
	TaskEventDownload = "Download"

	// Task downloaded successfully.
	TaskEventDownloadSucceeded = "DownloadSucceeded"

	// Task downloaded failed.
	TaskEventDownloadFailed = "DownloadFailed"

	// Task leaves.
	TaskEventLeave = "Leave"
)
View Source
const (
	// GC host id.
	GCHostID = "host"
)
View Source
const (
	// GC peer id.
	GCPeerID = "peer"
)
View Source
const (
	// GC task id.
	GCTaskID = "task"
)
View Source
const (
	// Default value of seed peer failed timeout.
	SeedPeerFailedTimeout = 30 * time.Minute
)

Variables

This section is empty.

Functions

func IsPieceBackToSource added in v2.0.8

func IsPieceBackToSource(parentID string) bool

IsPieceBackToSource returns whether the piece is downloaded back-to-source.

Types

type Build added in v2.0.9

type Build struct {
	// Git version.
	GitVersion string `csv:"gitVersion"`

	// Git commit.
	GitCommit string `csv:"gitCommit"`

	// Golang version.
	GoVersion string `csv:"goVersion"`

	// Build platform.
	Platform string `csv:"platform"`
}

Build contains content for build.

type CPU added in v2.0.9

type CPU struct {
	// Number of logical cores in the system.
	LogicalCount uint32 `csv:"logicalCount"`

	// Number of physical cores in the system.
	PhysicalCount uint32 `csv:"physicalCount"`

	// Percent calculates the percentage of cpu used.
	Percent float64 `csv:"percent"`

	// Calculates the percentage of cpu used by process.
	ProcessPercent float64 `csv:"processPercent"`

	// Times contains the amounts of time the CPU has spent performing different kinds of work.
	Times CPUTimes `csv:"times"`
}

CPU contains content for cpu.

type CPUTimes added in v2.0.9

type CPUTimes struct {
	// CPU time of user.
	User float64 `csv:"user"`

	// CPU time of system.
	System float64 `csv:"system"`

	// CPU time of idle.
	Idle float64 `csv:"idle"`

	// CPU time of nice.
	Nice float64 `csv:"nice"`

	// CPU time of iowait.
	Iowait float64 `csv:"iowait"`

	// CPU time of irq.
	Irq float64 `csv:"irq"`

	// CPU time of softirq.
	Softirq float64 `csv:"softirq"`

	// CPU time of steal.
	Steal float64 `csv:"steal"`

	// CPU time of guest.
	Guest float64 `csv:"guest"`

	// CPU time of guest nice.
	GuestNice float64 `csv:"guestNice"`
}

CPUTimes contains content for cpu times.

type Disk added in v2.0.9

type Disk struct {
	// Total amount of disk on the data path of dragonfly.
	Total uint64 `csv:"total"`

	// Free amount of disk on the data path of dragonfly.
	Free uint64 `csv:"free"`

	// Used amount of disk on the data path of dragonfly.
	Used uint64 `csv:"used"`

	// Used percent of disk on the data path of dragonfly directory.
	UsedPercent float64 `csv:"usedPercent"`

	// Total amount of indoes on the data path of dragonfly directory.
	InodesTotal uint64 `csv:"inodesTotal"`

	// Used amount of indoes on the data path of dragonfly directory.
	InodesUsed uint64 `csv:"inodesUsed"`

	// Free amount of indoes on the data path of dragonfly directory.
	InodesFree uint64 `csv:"inodesFree"`

	// Used percent of indoes on the data path of dragonfly directory.
	InodesUsedPercent float64 `csv:"inodesUsedPercent"`
}

Disk contains content for disk.

type Host

type Host struct {
	// ID is host id.
	ID string

	// Type is host type.
	Type types.HostType

	// Hostname is host name.
	Hostname string

	// IP is host ip.
	IP string

	// Port is grpc service port.
	Port int32

	// DownloadPort is piece downloading port.
	DownloadPort int32

	// ObjectStoragePort is object storage port.
	ObjectStoragePort int32

	// Host OS.
	OS string

	// Host platform.
	Platform string

	// Host platform family.
	PlatformFamily string

	// Host platform version.
	PlatformVersion string

	// Host kernel version.
	KernelVersion string

	// CPU Stat.
	CPU CPU

	// Memory Stat.
	Memory Memory

	// Network Stat.
	Network Network

	// Dist Stat.
	Disk Disk

	// Build information.
	Build Build

	// SchedulerClusterID is the scheduler cluster id matched by scopes.
	SchedulerClusterID uint64

	// ConcurrentUploadLimit is concurrent upload limit count.
	ConcurrentUploadLimit *atomic.Int32

	// ConcurrentUploadCount is concurrent upload count.
	ConcurrentUploadCount *atomic.Int32

	// UploadCount is total upload count.
	UploadCount *atomic.Int64

	// UploadFailedCount is upload failed count.
	UploadFailedCount *atomic.Int64

	// Peer sync map.
	Peers *sync.Map

	// PeerCount is peer count.
	PeerCount *atomic.Int32

	// CreatedAt is host create time.
	CreatedAt *atomic.Time

	// UpdatedAt is host update time.
	UpdatedAt *atomic.Time

	// Host log.
	Log *logger.SugaredLoggerOnWith
}

Host contains content for host.

func NewHost

func NewHost(
	id, ip, hostname string, port, downloadPort int32,
	typ types.HostType, options ...HostOption,
) *Host

New host instance.

func (*Host) DeletePeer

func (h *Host) DeletePeer(key string)

DeletePeer deletes peer for a key.

func (*Host) FreeUploadCount added in v2.0.8

func (h *Host) FreeUploadCount() int32

FreeUploadCount return free upload count of host.

func (*Host) LeavePeers

func (h *Host) LeavePeers()

LeavePeers set peer state to PeerStateLeave.

func (*Host) LoadPeer

func (h *Host) LoadPeer(key string) (*Peer, bool)

LoadPeer return peer for a key.

func (*Host) StorePeer

func (h *Host) StorePeer(peer *Peer)

StorePeer set peer.

type HostManager

type HostManager interface {
	// Load returns host for a key.
	Load(string) (*Host, bool)

	// Store sets host.
	Store(*Host)

	// LoadOrStore returns host the key if present.
	// Otherwise, it stores and returns the given host.
	// The loaded result is true if the host was loaded, false if stored.
	LoadOrStore(*Host) (*Host, bool)

	// Delete deletes host for a key.
	Delete(string)

	// Range calls f sequentially for each key and value present in the map.
	// If f returns false, range stops the iteration.
	Range(f func(any, any) bool)

	// LoadRandomHosts loads host randomly through the Range of sync.Map.
	LoadRandomHosts(int, set.SafeSet[string]) []*Host

	// Try to reclaim host.
	RunGC() error
}

HostManager is the interface used for host manager.

type HostOption

type HostOption func(h *Host)

HostOption is a functional option for configuring the host.

func WithBuild added in v2.0.9

func WithBuild(build Build) HostOption

WithBuild sets host's build information.

func WithCPU added in v2.0.9

func WithCPU(cpu CPU) HostOption

WithCPU sets host's cpu.

func WithConcurrentUploadLimit added in v2.0.8

func WithConcurrentUploadLimit(limit int32) HostOption

WithConcurrentUploadLimit sets host's ConcurrentUploadLimit.

func WithDisk added in v2.0.9

func WithDisk(disk Disk) HostOption

WithDisk sets host's disk.

func WithKernelVersion added in v2.0.9

func WithKernelVersion(kernelVersion string) HostOption

WithKernelVersion sets host's kernel version.

func WithMemory added in v2.0.9

func WithMemory(memory Memory) HostOption

WithMemory sets host's memory.

func WithNetwork added in v2.0.9

func WithNetwork(network Network) HostOption

WithNetwork sets host's network.

func WithOS added in v2.0.9

func WithOS(os string) HostOption

WithOS sets host's os.

func WithObjectStoragePort added in v2.0.30

func WithObjectStoragePort(port int32) HostOption

WithObjectStoragePort sets host's ObjectStoragePort.

func WithPlatform added in v2.0.9

func WithPlatform(platform string) HostOption

WithPlatform sets host's platform.

func WithPlatformFamily added in v2.0.9

func WithPlatformFamily(platformFamily string) HostOption

WithPlatformFamily sets host's platform family.

func WithPlatformVersion added in v2.0.9

func WithPlatformVersion(platformVersion string) HostOption

WithPlatformVersion sets host's platform version.

func WithSchedulerClusterID added in v2.0.30

func WithSchedulerClusterID(id uint64) HostOption

WithSchedulerClusterID sets host's SchedulerClusterID.

type Memory added in v2.0.9

type Memory struct {
	// Total amount of RAM on this system.
	Total uint64 `csv:"total"`

	// RAM available for programs to allocate.
	Available uint64 `csv:"available"`

	// RAM used by programs.
	Used uint64 `csv:"used"`

	// Percentage of RAM used by programs.
	UsedPercent float64 `csv:"usedPercent"`

	// Calculates the percentage of memory used by process.
	ProcessUsedPercent float64 `csv:"processUsedPercent"`

	// This is the kernel's notion of free memory.
	Free uint64 `csv:"free"`
}

Memory contains content for memory.

type MockHostManager

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

MockHostManager is a mock of HostManager interface.

func NewMockHostManager

func NewMockHostManager(ctrl *gomock.Controller) *MockHostManager

NewMockHostManager creates a new mock instance.

func (*MockHostManager) Delete

func (m *MockHostManager) Delete(arg0 string)

Delete mocks base method.

func (*MockHostManager) EXPECT

EXPECT returns an object that allows the caller to indicate expected use.

func (*MockHostManager) Load

func (m *MockHostManager) Load(arg0 string) (*Host, bool)

Load mocks base method.

func (*MockHostManager) LoadOrStore

func (m *MockHostManager) LoadOrStore(arg0 *Host) (*Host, bool)

LoadOrStore mocks base method.

func (*MockHostManager) LoadRandomHosts added in v2.0.30

func (m *MockHostManager) LoadRandomHosts(arg0 int, arg1 set.SafeSet[string]) []*Host

LoadRandomHosts mocks base method.

func (*MockHostManager) Range added in v2.0.30

func (m *MockHostManager) Range(f func(any, any) bool)

Range mocks base method.

func (*MockHostManager) RunGC

func (m *MockHostManager) RunGC() error

RunGC mocks base method.

func (*MockHostManager) Store

func (m *MockHostManager) Store(arg0 *Host)

Store mocks base method.

type MockHostManagerMockRecorder

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

MockHostManagerMockRecorder is the mock recorder for MockHostManager.

func (*MockHostManagerMockRecorder) Delete

func (mr *MockHostManagerMockRecorder) Delete(arg0 any) *gomock.Call

Delete indicates an expected call of Delete.

func (*MockHostManagerMockRecorder) Load

func (mr *MockHostManagerMockRecorder) Load(arg0 any) *gomock.Call

Load indicates an expected call of Load.

func (*MockHostManagerMockRecorder) LoadOrStore

func (mr *MockHostManagerMockRecorder) LoadOrStore(arg0 any) *gomock.Call

LoadOrStore indicates an expected call of LoadOrStore.

func (*MockHostManagerMockRecorder) LoadRandomHosts added in v2.0.30

func (mr *MockHostManagerMockRecorder) LoadRandomHosts(arg0, arg1 any) *gomock.Call

LoadRandomHosts indicates an expected call of LoadRandomHosts.

func (*MockHostManagerMockRecorder) Range added in v2.0.30

Range indicates an expected call of Range.

func (*MockHostManagerMockRecorder) RunGC

RunGC indicates an expected call of RunGC.

func (*MockHostManagerMockRecorder) Store

func (mr *MockHostManagerMockRecorder) Store(arg0 any) *gomock.Call

Store indicates an expected call of Store.

type MockPeerManager

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

MockPeerManager is a mock of PeerManager interface.

func NewMockPeerManager

func NewMockPeerManager(ctrl *gomock.Controller) *MockPeerManager

NewMockPeerManager creates a new mock instance.

func (*MockPeerManager) Delete

func (m *MockPeerManager) Delete(arg0 string)

Delete mocks base method.

func (*MockPeerManager) EXPECT

EXPECT returns an object that allows the caller to indicate expected use.

func (*MockPeerManager) Load

func (m *MockPeerManager) Load(arg0 string) (*Peer, bool)

Load mocks base method.

func (*MockPeerManager) LoadOrStore

func (m *MockPeerManager) LoadOrStore(arg0 *Peer) (*Peer, bool)

LoadOrStore mocks base method.

func (*MockPeerManager) Range added in v2.0.30

func (m *MockPeerManager) Range(f func(any, any) bool)

Range mocks base method.

func (*MockPeerManager) RunGC

func (m *MockPeerManager) RunGC() error

RunGC mocks base method.

func (*MockPeerManager) Store

func (m *MockPeerManager) Store(arg0 *Peer)

Store mocks base method.

type MockPeerManagerMockRecorder

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

MockPeerManagerMockRecorder is the mock recorder for MockPeerManager.

func (*MockPeerManagerMockRecorder) Delete

func (mr *MockPeerManagerMockRecorder) Delete(arg0 any) *gomock.Call

Delete indicates an expected call of Delete.

func (*MockPeerManagerMockRecorder) Load

func (mr *MockPeerManagerMockRecorder) Load(arg0 any) *gomock.Call

Load indicates an expected call of Load.

func (*MockPeerManagerMockRecorder) LoadOrStore

func (mr *MockPeerManagerMockRecorder) LoadOrStore(arg0 any) *gomock.Call

LoadOrStore indicates an expected call of LoadOrStore.

func (*MockPeerManagerMockRecorder) Range added in v2.0.30

Range indicates an expected call of Range.

func (*MockPeerManagerMockRecorder) RunGC

RunGC indicates an expected call of RunGC.

func (*MockPeerManagerMockRecorder) Store

func (mr *MockPeerManagerMockRecorder) Store(arg0 any) *gomock.Call

Store indicates an expected call of Store.

type MockResource

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

MockResource is a mock of Resource interface.

func NewMockResource

func NewMockResource(ctrl *gomock.Controller) *MockResource

NewMockResource creates a new mock instance.

func (*MockResource) EXPECT

EXPECT returns an object that allows the caller to indicate expected use.

func (*MockResource) HostManager

func (m *MockResource) HostManager() HostManager

HostManager mocks base method.

func (*MockResource) PeerManager

func (m *MockResource) PeerManager() PeerManager

PeerManager mocks base method.

func (*MockResource) SeedPeer added in v2.0.3

func (m *MockResource) SeedPeer() SeedPeer

SeedPeer mocks base method.

func (*MockResource) Stop added in v2.0.7

func (m *MockResource) Stop() error

Stop mocks base method.

func (*MockResource) TaskManager

func (m *MockResource) TaskManager() TaskManager

TaskManager mocks base method.

type MockResourceMockRecorder

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

MockResourceMockRecorder is the mock recorder for MockResource.

func (*MockResourceMockRecorder) HostManager

func (mr *MockResourceMockRecorder) HostManager() *gomock.Call

HostManager indicates an expected call of HostManager.

func (*MockResourceMockRecorder) PeerManager

func (mr *MockResourceMockRecorder) PeerManager() *gomock.Call

PeerManager indicates an expected call of PeerManager.

func (*MockResourceMockRecorder) SeedPeer added in v2.0.3

func (mr *MockResourceMockRecorder) SeedPeer() *gomock.Call

SeedPeer indicates an expected call of SeedPeer.

func (*MockResourceMockRecorder) Stop added in v2.0.7

func (mr *MockResourceMockRecorder) Stop() *gomock.Call

Stop indicates an expected call of Stop.

func (*MockResourceMockRecorder) TaskManager

func (mr *MockResourceMockRecorder) TaskManager() *gomock.Call

TaskManager indicates an expected call of TaskManager.

type MockSeedPeer added in v2.0.3

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

MockSeedPeer is a mock of SeedPeer interface.

func NewMockSeedPeer added in v2.0.3

func NewMockSeedPeer(ctrl *gomock.Controller) *MockSeedPeer

NewMockSeedPeer creates a new mock instance.

func (*MockSeedPeer) Client added in v2.0.3

func (m *MockSeedPeer) Client() SeedPeerClient

Client mocks base method.

func (*MockSeedPeer) EXPECT added in v2.0.3

EXPECT returns an object that allows the caller to indicate expected use.

func (*MockSeedPeer) Stop added in v2.0.8

func (m *MockSeedPeer) Stop() error

Stop mocks base method.

func (*MockSeedPeer) TriggerDownloadTask added in v2.1.26

func (m *MockSeedPeer) TriggerDownloadTask(arg0 context.Context, arg1 string, arg2 *dfdaemon.TriggerDownloadTaskRequest) error

TriggerDownloadTask mocks base method.

func (*MockSeedPeer) TriggerTask added in v2.0.3

func (m *MockSeedPeer) TriggerTask(arg0 context.Context, arg1 *http.Range, arg2 *Task) (*Peer, *scheduler.PeerResult, error)

TriggerTask mocks base method.

type MockSeedPeerClient added in v2.0.3

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

MockSeedPeerClient is a mock of SeedPeerClient interface.

func NewMockSeedPeerClient added in v2.0.3

func NewMockSeedPeerClient(ctrl *gomock.Controller) *MockSeedPeerClient

NewMockSeedPeerClient creates a new mock instance.

func (*MockSeedPeerClient) Addrs added in v2.1.18

func (m *MockSeedPeerClient) Addrs() []string

Addrs mocks base method.

func (*MockSeedPeerClient) Close added in v2.0.3

func (m *MockSeedPeerClient) Close() error

Close mocks base method.

func (*MockSeedPeerClient) DownloadPiece added in v2.1.26

DownloadPiece mocks base method.

func (*MockSeedPeerClient) EXPECT added in v2.0.3

EXPECT returns an object that allows the caller to indicate expected use.

func (*MockSeedPeerClient) GetPieceTasks added in v2.0.3

func (m *MockSeedPeerClient) GetPieceTasks(arg0 context.Context, arg1 *common.PieceTaskRequest, arg2 ...grpc.CallOption) (*common.PiecePacket, error)

GetPieceTasks mocks base method.

func (*MockSeedPeerClient) ObtainSeeds added in v2.0.3

ObtainSeeds mocks base method.

func (*MockSeedPeerClient) OnNotify added in v2.0.3

func (m *MockSeedPeerClient) OnNotify(arg0 *config.DynconfigData)

OnNotify mocks base method.

func (*MockSeedPeerClient) SyncPieceTasks added in v2.0.3

SyncPieceTasks mocks base method.

func (*MockSeedPeerClient) SyncPieces added in v2.1.26

SyncPieces mocks base method.

func (*MockSeedPeerClient) TriggerDownloadTask added in v2.1.26

func (m *MockSeedPeerClient) TriggerDownloadTask(arg0 context.Context, arg1 string, arg2 *dfdaemon.TriggerDownloadTaskRequest, arg3 ...grpc.CallOption) error

TriggerDownloadTask mocks base method.

type MockSeedPeerClientMockRecorder added in v2.0.3

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

MockSeedPeerClientMockRecorder is the mock recorder for MockSeedPeerClient.

func (*MockSeedPeerClientMockRecorder) Addrs added in v2.1.18

Addrs indicates an expected call of Addrs.

func (*MockSeedPeerClientMockRecorder) Close added in v2.0.3

Close indicates an expected call of Close.

func (*MockSeedPeerClientMockRecorder) DownloadPiece added in v2.1.26

func (mr *MockSeedPeerClientMockRecorder) DownloadPiece(arg0, arg1 any, arg2 ...any) *gomock.Call

DownloadPiece indicates an expected call of DownloadPiece.

func (*MockSeedPeerClientMockRecorder) GetPieceTasks added in v2.0.3

func (mr *MockSeedPeerClientMockRecorder) GetPieceTasks(arg0, arg1 any, arg2 ...any) *gomock.Call

GetPieceTasks indicates an expected call of GetPieceTasks.

func (*MockSeedPeerClientMockRecorder) ObtainSeeds added in v2.0.3

func (mr *MockSeedPeerClientMockRecorder) ObtainSeeds(arg0, arg1 any, arg2 ...any) *gomock.Call

ObtainSeeds indicates an expected call of ObtainSeeds.

func (*MockSeedPeerClientMockRecorder) OnNotify added in v2.0.3

func (mr *MockSeedPeerClientMockRecorder) OnNotify(arg0 any) *gomock.Call

OnNotify indicates an expected call of OnNotify.

func (*MockSeedPeerClientMockRecorder) SyncPieceTasks added in v2.0.3

func (mr *MockSeedPeerClientMockRecorder) SyncPieceTasks(arg0, arg1 any, arg2 ...any) *gomock.Call

SyncPieceTasks indicates an expected call of SyncPieceTasks.

func (*MockSeedPeerClientMockRecorder) SyncPieces added in v2.1.26

func (mr *MockSeedPeerClientMockRecorder) SyncPieces(arg0, arg1 any, arg2 ...any) *gomock.Call

SyncPieces indicates an expected call of SyncPieces.

func (*MockSeedPeerClientMockRecorder) TriggerDownloadTask added in v2.1.26

func (mr *MockSeedPeerClientMockRecorder) TriggerDownloadTask(arg0, arg1, arg2 any, arg3 ...any) *gomock.Call

TriggerDownloadTask indicates an expected call of TriggerDownloadTask.

type MockSeedPeerMockRecorder added in v2.0.3

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

MockSeedPeerMockRecorder is the mock recorder for MockSeedPeer.

func (*MockSeedPeerMockRecorder) Client added in v2.0.3

func (mr *MockSeedPeerMockRecorder) Client() *gomock.Call

Client indicates an expected call of Client.

func (*MockSeedPeerMockRecorder) Stop added in v2.0.8

func (mr *MockSeedPeerMockRecorder) Stop() *gomock.Call

Stop indicates an expected call of Stop.

func (*MockSeedPeerMockRecorder) TriggerDownloadTask added in v2.1.26

func (mr *MockSeedPeerMockRecorder) TriggerDownloadTask(arg0, arg1, arg2 any) *gomock.Call

TriggerDownloadTask indicates an expected call of TriggerDownloadTask.

func (*MockSeedPeerMockRecorder) TriggerTask added in v2.0.3

func (mr *MockSeedPeerMockRecorder) TriggerTask(arg0, arg1, arg2 any) *gomock.Call

TriggerTask indicates an expected call of TriggerTask.

type MockTaskManager

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

MockTaskManager is a mock of TaskManager interface.

func NewMockTaskManager

func NewMockTaskManager(ctrl *gomock.Controller) *MockTaskManager

NewMockTaskManager creates a new mock instance.

func (*MockTaskManager) Delete

func (m *MockTaskManager) Delete(arg0 string)

Delete mocks base method.

func (*MockTaskManager) EXPECT

EXPECT returns an object that allows the caller to indicate expected use.

func (*MockTaskManager) Load

func (m *MockTaskManager) Load(arg0 string) (*Task, bool)

Load mocks base method.

func (*MockTaskManager) LoadOrStore

func (m *MockTaskManager) LoadOrStore(arg0 *Task) (*Task, bool)

LoadOrStore mocks base method.

func (*MockTaskManager) Range added in v2.0.30

func (m *MockTaskManager) Range(f func(any, any) bool)

Range mocks base method.

func (*MockTaskManager) RunGC

func (m *MockTaskManager) RunGC() error

RunGC mocks base method.

func (*MockTaskManager) Store

func (m *MockTaskManager) Store(arg0 *Task)

Store mocks base method.

type MockTaskManagerMockRecorder

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

MockTaskManagerMockRecorder is the mock recorder for MockTaskManager.

func (*MockTaskManagerMockRecorder) Delete

func (mr *MockTaskManagerMockRecorder) Delete(arg0 any) *gomock.Call

Delete indicates an expected call of Delete.

func (*MockTaskManagerMockRecorder) Load

func (mr *MockTaskManagerMockRecorder) Load(arg0 any) *gomock.Call

Load indicates an expected call of Load.

func (*MockTaskManagerMockRecorder) LoadOrStore

func (mr *MockTaskManagerMockRecorder) LoadOrStore(arg0 any) *gomock.Call

LoadOrStore indicates an expected call of LoadOrStore.

func (*MockTaskManagerMockRecorder) Range added in v2.0.30

Range indicates an expected call of Range.

func (*MockTaskManagerMockRecorder) RunGC

RunGC indicates an expected call of RunGC.

func (*MockTaskManagerMockRecorder) Store

func (mr *MockTaskManagerMockRecorder) Store(arg0 any) *gomock.Call

Store indicates an expected call of Store.

type Network added in v2.0.9

type Network struct {
	// Return count of tcp connections opened and status is ESTABLISHED.
	TCPConnectionCount uint32 `csv:"tcpConnectionCount"`

	// Return count of upload tcp connections opened and status is ESTABLISHED.
	UploadTCPConnectionCount uint32 `csv:"uploadTCPConnectionCount"`

	// Location path(area|country|province|city|...).
	Location string `csv:"location"`

	// IDC where the peer host is located
	IDC string `csv:"idc"`
}

Network contains content for network.

type Option added in v2.0.3

type Option func(r *resource)

Option is a functional option for configuring the resource.

func WithTransportCredentials added in v2.0.9

func WithTransportCredentials(creds credentials.TransportCredentials) Option

WithTransportCredentials returns a DialOption which configures a connection level security credentials (e.g., TLS/SSL).

type Peer

type Peer struct {
	// ID is peer id.
	ID string

	// Config is resource config.
	Config *config.ResourceConfig

	// Range is url range of request.
	Range *nethttp.Range

	// Priority is peer priority.
	Priority commonv2.Priority

	// Piece sync map.
	Pieces *sync.Map

	// Pieces is finished pieces bitset.
	FinishedPieces *bitset.BitSet

	// Cost is the cost of downloading.
	Cost *atomic.Duration

	// ReportPieceResultStream is the grpc stream of Scheduler_ReportPieceResultServer,
	// Used only in v1 version of the grpc.
	ReportPieceResultStream *atomic.Value

	// AnnouncePeerStream is the grpc stream of Scheduler_AnnouncePeerServer,
	// Used only in v2 version of the grpc.
	AnnouncePeerStream *atomic.Value

	// Task state machine.
	FSM *fsm.FSM

	// Task is peer task.
	Task *Task

	// Host is peer host.
	Host *Host

	// BlockParents is bad parents ids.
	BlockParents set.SafeSet[string]

	// NeedBackToSource needs downloaded from source.
	//
	// When peer is registering, at the same time,
	// scheduler needs to create the new corresponding task and the seed peer is disabled,
	// NeedBackToSource is set to true.
	NeedBackToSource *atomic.Bool

	// PieceUpdatedAt is piece update time.
	PieceUpdatedAt *atomic.Time

	// CreatedAt is peer create time.
	CreatedAt *atomic.Time

	// UpdatedAt is peer update time.
	UpdatedAt *atomic.Time

	// Peer log.
	Log *logger.SugaredLoggerOnWith
	// contains filtered or unexported fields
}

Peer contains content for peer.

func NewPeer

func NewPeer(id string, cfg *config.ResourceConfig, task *Task, host *Host, options ...PeerOption) *Peer

New Peer instance.

func (*Peer) AppendPieceCost

func (p *Peer) AppendPieceCost(duration time.Duration)

AppendPieceCost append piece cost to costs slice.

func (*Peer) CalculatePriority added in v2.0.9

func (p *Peer) CalculatePriority(dynconfig config.DynconfigInterface) commonv2.Priority

CalculatePriority returns priority of peer.

func (*Peer) Children

func (p *Peer) Children() []*Peer

Children returns children of peer.

func (*Peer) DeleteAnnouncePeerStream added in v2.0.9

func (p *Peer) DeleteAnnouncePeerStream()

DeleteAnnouncePeerStream deletes the grpc stream of Scheduler_AnnouncePeerServer, Used only in v2 version of the grpc.

func (*Peer) DeletePiece added in v2.0.9

func (p *Peer) DeletePiece(key int32)

DeletePiece deletes piece for a key.

func (*Peer) DeleteReportPieceResultStream added in v2.0.9

func (p *Peer) DeleteReportPieceResultStream()

DeleteReportPieceResultStream deletes the grpc stream of Scheduler_ReportPieceResultServer, Used only in v1 version of the grpc.

func (*Peer) DownloadTinyFile

func (p *Peer) DownloadTinyFile() ([]byte, error)

DownloadTinyFile downloads tiny file from peer without range.

func (*Peer) LoadAnnouncePeerStream added in v2.0.9

func (p *Peer) LoadAnnouncePeerStream() (schedulerv2.Scheduler_AnnouncePeerServer, bool)

LoadAnnouncePeerStream return the grpc stream of Scheduler_AnnouncePeerServer, Used only in v2 version of the grpc.

func (*Peer) LoadPiece added in v2.0.9

func (p *Peer) LoadPiece(key int32) (*Piece, bool)

LoadPiece return piece for a key.

func (*Peer) LoadReportPieceResultStream added in v2.0.9

func (p *Peer) LoadReportPieceResultStream() (schedulerv1.Scheduler_ReportPieceResultServer, bool)

LoadReportPieceResultStream return the grpc stream of Scheduler_ReportPieceResultServer, Used only in v1 version of the grpc.

func (*Peer) Parents added in v2.0.5

func (p *Peer) Parents() []*Peer

Parents returns parents of peer.

func (*Peer) PieceCosts

func (p *Peer) PieceCosts() []time.Duration

PieceCosts return piece costs slice.

func (*Peer) StoreAnnouncePeerStream added in v2.0.9

func (p *Peer) StoreAnnouncePeerStream(stream schedulerv2.Scheduler_AnnouncePeerServer)

StoreAnnouncePeerStream set the grpc stream of Scheduler_AnnouncePeerServer, Used only in v2 version of the grpc.

func (*Peer) StorePiece added in v2.0.9

func (p *Peer) StorePiece(piece *Piece)

StorePiece set piece.

func (*Peer) StoreReportPieceResultStream added in v2.0.9

func (p *Peer) StoreReportPieceResultStream(stream schedulerv1.Scheduler_ReportPieceResultServer)

StoreReportPieceResultStream set the grpc stream of Scheduler_ReportPieceResultServer, Used only in v1 version of the grpc.

type PeerManager

type PeerManager interface {
	// Load returns peer for a key.
	Load(string) (*Peer, bool)

	// Store sets peer.
	Store(*Peer)

	// LoadOrStore returns peer the key if present.
	// Otherwise, it stores and returns the given peer.
	// The loaded result is true if the peer was loaded, false if stored.
	LoadOrStore(*Peer) (*Peer, bool)

	// Delete deletes peer for a key.
	Delete(string)

	// Range calls f sequentially for each key and value present in the map.
	// If f returns false, range stops the iteration.
	Range(f func(any, any) bool)

	// Try to reclaim peer.
	RunGC() error
}

PeerManager is the interface used for peer manager.

type PeerOption

type PeerOption func(peer *Peer)

PeerOption is a functional option for peer.

func WithAnnouncePeerStream added in v2.0.9

func WithAnnouncePeerStream(stream schedulerv2.Scheduler_AnnouncePeerServer) PeerOption

WithAnnouncePeerStream set AnnouncePeerStream for peer.

func WithPriority added in v2.0.9

func WithPriority(priority commonv2.Priority) PeerOption

WithPriority set Priority for peer.

func WithRange added in v2.0.9

func WithRange(rg nethttp.Range) PeerOption

WithRange set Range for peer.

type Piece added in v2.0.9

type Piece struct {
	// Piece number.
	Number int32
	// Parent peer id.
	ParentID string
	// Piece offset.
	Offset uint64
	// Piece length.
	Length uint64
	// Digest of the piece data.
	Digest *digest.Digest
	// Traffic type.
	TrafficType commonv2.TrafficType
	// Downloading piece costs time.
	Cost time.Duration
	// Piece create time.
	CreatedAt time.Time
}

Piece represents information of piece.

type Resource

type Resource interface {
	// SeedPeer interface.
	SeedPeer() SeedPeer

	// Host manager interface.
	HostManager() HostManager

	// Peer manager interface.
	PeerManager() PeerManager

	// Task manager interface.
	TaskManager() TaskManager

	// Stop resource serivce.
	Stop() error
}

Resource is the interface used for resource.

func New

func New(cfg *config.Config, gc gc.GC, dynconfig config.DynconfigInterface, options ...Option) (Resource, error)

New returns Resource interface.

type SeedPeer added in v2.0.3

type SeedPeer interface {
	// TriggerDownloadTask triggers the seed peer to download task.
	// Used only in v2 version of the grpc.
	TriggerDownloadTask(context.Context, string, *dfdaemonv2.TriggerDownloadTaskRequest) error

	// TriggerTask triggers the seed peer to download task.
	// Used only in v1 version of the grpc.
	TriggerTask(context.Context, *http.Range, *Task) (*Peer, *schedulerv1.PeerResult, error)

	// Client returns grpc client of seed peer.
	Client() SeedPeerClient

	// Stop seed peer serivce.
	Stop() error
}

SeedPeer is the interface used for seed peer.

type SeedPeerClient added in v2.0.3

type SeedPeerClient interface {
	// Addrs returns the addresses of seed peers.
	Addrs() []string

	// Client is cdnsystem grpc client interface.
	cdnsystemclient.Client

	// V2 is dfdaemon v2 grpc client interface.
	dfdaemonclient.V2

	// Observer is dynconfig observer interface.
	config.Observer
}

SeedPeerClient is the interface used for client of seed peer.

type Task

type Task struct {
	// ID is task id.
	ID string

	// Type is task type.
	Type commonv2.TaskType

	// URL is task download url.
	URL string

	// Digest of the task content, for example md5:xxx or sha256:yyy.
	Digest *digest.Digest

	// URL tag identifies different task for same url.
	Tag string

	// Application identifies different task for same url.
	Application string

	// FilteredQueryParams is filtered query params.
	FilteredQueryParams []string

	// Task request headers.
	Header map[string]string

	// Task piece length.
	PieceLength int32

	// DirectPiece is tiny piece data.
	DirectPiece []byte

	// ContentLength is task total content length.
	ContentLength *atomic.Int64

	// TotalPieceCount is total piece count.
	TotalPieceCount *atomic.Int32

	// BackToSourceLimit is back-to-source limit.
	BackToSourceLimit *atomic.Int32

	// BackToSourcePeers is back-to-source sync map.
	BackToSourcePeers set.SafeSet[string]

	// Task state machine.
	FSM *fsm.FSM

	// Piece sync map.
	Pieces *sync.Map

	// DAG is directed acyclic graph of peers.
	DAG dag.DAG[*Peer]

	// PeerFailedCount is peer failed count,
	// if one peer succeeds, the value is reset to zero.
	PeerFailedCount *atomic.Int32

	// CreatedAt is task create time.
	CreatedAt *atomic.Time

	// UpdatedAt is task update time.
	UpdatedAt *atomic.Time

	// Task log.
	Log *logger.SugaredLoggerOnWith
}

Task contains content for task.

func NewTask

func NewTask(id, url, tag, application string, typ commonv2.TaskType, filteredQueryParams []string,
	header map[string]string, backToSourceLimit int32, options ...TaskOption) *Task

New task instance.

func (*Task) AddPeerEdge added in v2.0.5

func (t *Task) AddPeerEdge(fromPeer *Peer, toPeer *Peer) error

AddPeerEdge adds inedges between two peers.

func (*Task) AnnouncePeers added in v2.0.9

func (t *Task) AnnouncePeers(resp *schedulerv2.AnnouncePeerResponse, event string)

AnnouncePeers announces all peers in the task with the state code. Used only in v2 version of the grpc.

func (*Task) CanAddPeerEdge added in v2.0.5

func (t *Task) CanAddPeerEdge(fromPeerKey, toPeerKey string) bool

CanAddPeerEdge finds whether there are peer circles through depth-first search.

func (*Task) CanBackToSource

func (t *Task) CanBackToSource() bool

CanBackToSource represents whether task can back-to-source.

func (*Task) CanReuseDirectPiece added in v2.0.7

func (t *Task) CanReuseDirectPiece() bool

CanReuseDirectPiece represents whether task can reuse data of direct piece.

func (*Task) DeletePeer

func (t *Task) DeletePeer(key string)

DeletePeer deletes peer for a key.

func (*Task) DeletePeerInEdges added in v2.0.5

func (t *Task) DeletePeerInEdges(key string) error

DeletePeerInEdges deletes inedges of peer.

func (*Task) DeletePeerOutEdges added in v2.0.5

func (t *Task) DeletePeerOutEdges(key string) error

DeletePeerOutEdges deletes outedges of peer.

func (*Task) DeletePiece

func (t *Task) DeletePiece(key int32)

DeletePiece deletes piece for a key.

func (*Task) HasAvailablePeer

func (t *Task) HasAvailablePeer(blocklist set.SafeSet[string]) bool

HasAvailablePeer returns whether there is an available peer.

func (*Task) IsSeedPeerFailed added in v2.0.3

func (t *Task) IsSeedPeerFailed() bool

IsSeedPeerFailed returns whether the seed peer in the task failed.

func (*Task) LoadPeer

func (t *Task) LoadPeer(key string) (*Peer, bool)

LoadPeer return peer for a key.

func (*Task) LoadPiece

func (t *Task) LoadPiece(key int32) (*Piece, bool)

LoadPiece return piece for a key.

func (*Task) LoadRandomPeers added in v2.0.5

func (t *Task) LoadRandomPeers(n uint) []*Peer

LoadRandomPeers return random peers.

func (*Task) LoadSeedPeer added in v2.0.3

func (t *Task) LoadSeedPeer() (*Peer, bool)

LoadSeedPeer return latest seed peer in peers sync map.

func (*Task) PeerCount

func (t *Task) PeerCount() int

PeerCount returns count of peer.

func (*Task) PeerDegree added in v2.0.5

func (t *Task) PeerDegree(key string) (int, error)

PeerDegree returns the degree of peer.

func (*Task) PeerInDegree added in v2.0.5

func (t *Task) PeerInDegree(key string) (int, error)

PeerInDegree returns the indegree of peer.

func (*Task) PeerOutDegree added in v2.0.5

func (t *Task) PeerOutDegree(key string) (int, error)

PeerOutDegree returns the outdegree of peer.

func (*Task) ReportPieceResultToPeers added in v2.0.9

func (t *Task) ReportPieceResultToPeers(peerPacket *schedulerv1.PeerPacket, event string)

ReportPieceResultToPeers reports all peers in the task with the state code. Used only in v1 version of the grpc.

func (*Task) SizeScope

func (t *Task) SizeScope() commonv2.SizeScope

SizeScope return task size scope type.

func (*Task) StorePeer

func (t *Task) StorePeer(peer *Peer)

StorePeer set peer.

func (*Task) StorePiece

func (t *Task) StorePiece(piece *Piece)

StorePiece set piece.

type TaskManager

type TaskManager interface {
	// Load returns task for a key.
	Load(string) (*Task, bool)

	// Store sets task.
	Store(*Task)

	// LoadOrStore returns task the key if present.
	// Otherwise, it stores and returns the given task.
	// The loaded result is true if the task was loaded, false if stored.
	LoadOrStore(*Task) (*Task, bool)

	// Delete deletes task for a key.
	Delete(string)

	// Range calls f sequentially for each key and value present in the map.
	// If f returns false, range stops the iteration.
	Range(f func(any, any) bool)

	// Try to reclaim task.
	RunGC() error
}

TaskManager is the interface used for task manager.

type TaskOption added in v2.0.9

type TaskOption func(task *Task)

TaskOption is a functional option for task.

func WithDigest added in v2.0.9

func WithDigest(d *digest.Digest) TaskOption

WithDigest set Digest for task.

func WithPieceLength added in v2.0.9

func WithPieceLength(pieceLength int32) TaskOption

WithPieceLength set PieceLength for task.

Jump to

Keyboard shortcuts

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