Documentation ¶
Overview ¶
Package resource is a generated GoMock package.
Package resource is a generated GoMock package.
Package resource is a generated GoMock package.
Package resource is a generated GoMock package.
Package resource is a generated GoMock package.
Package resource is a generated GoMock package.
Index ¶
- Constants
- func IsPieceBackToSource(parentID string) bool
- type Build
- type CPU
- type CPUTimes
- type Disk
- type Host
- type HostManager
- type HostOption
- func WithBuild(build Build) HostOption
- func WithCPU(cpu CPU) HostOption
- func WithConcurrentUploadLimit(limit int32) HostOption
- func WithDisk(disk Disk) HostOption
- func WithKernelVersion(kernelVersion string) HostOption
- func WithMemory(memory Memory) HostOption
- func WithNetwork(network Network) HostOption
- func WithOS(os string) HostOption
- func WithPlatform(platform string) HostOption
- func WithPlatformFamily(platformFamily string) HostOption
- func WithPlatformVersion(platformVersion string) HostOption
- type Memory
- type MockHostManager
- func (m *MockHostManager) Delete(arg0 string)
- func (m *MockHostManager) EXPECT() *MockHostManagerMockRecorder
- func (m *MockHostManager) Load(arg0 string) (*Host, bool)
- func (m *MockHostManager) LoadOrStore(arg0 *Host) (*Host, bool)
- func (m *MockHostManager) LoadRandomHosts(arg0 int, arg1 set.SafeSet[string]) []*Host
- func (m *MockHostManager) RunGC() error
- func (m *MockHostManager) Store(arg0 *Host)
- type MockHostManagerMockRecorder
- func (mr *MockHostManagerMockRecorder) Delete(arg0 interface{}) *gomock.Call
- func (mr *MockHostManagerMockRecorder) Load(arg0 interface{}) *gomock.Call
- func (mr *MockHostManagerMockRecorder) LoadOrStore(arg0 interface{}) *gomock.Call
- func (mr *MockHostManagerMockRecorder) LoadRandomHosts(arg0, arg1 interface{}) *gomock.Call
- func (mr *MockHostManagerMockRecorder) RunGC() *gomock.Call
- func (mr *MockHostManagerMockRecorder) Store(arg0 interface{}) *gomock.Call
- type MockPeerManager
- func (m *MockPeerManager) Delete(arg0 string)
- func (m *MockPeerManager) EXPECT() *MockPeerManagerMockRecorder
- func (m *MockPeerManager) Load(arg0 string) (*Peer, bool)
- func (m *MockPeerManager) LoadOrStore(arg0 *Peer) (*Peer, bool)
- func (m *MockPeerManager) RunGC() error
- func (m *MockPeerManager) Store(arg0 *Peer)
- type MockPeerManagerMockRecorder
- func (mr *MockPeerManagerMockRecorder) Delete(arg0 interface{}) *gomock.Call
- func (mr *MockPeerManagerMockRecorder) Load(arg0 interface{}) *gomock.Call
- func (mr *MockPeerManagerMockRecorder) LoadOrStore(arg0 interface{}) *gomock.Call
- func (mr *MockPeerManagerMockRecorder) RunGC() *gomock.Call
- func (mr *MockPeerManagerMockRecorder) Store(arg0 interface{}) *gomock.Call
- type MockResource
- type MockResourceMockRecorder
- func (mr *MockResourceMockRecorder) HostManager() *gomock.Call
- func (mr *MockResourceMockRecorder) PeerManager() *gomock.Call
- func (mr *MockResourceMockRecorder) SeedPeer() *gomock.Call
- func (mr *MockResourceMockRecorder) Stop() *gomock.Call
- func (mr *MockResourceMockRecorder) TaskManager() *gomock.Call
- type MockSeedPeer
- func (m *MockSeedPeer) Client() SeedPeerClient
- func (m *MockSeedPeer) DownloadTask(arg0 context.Context, arg1 *Task, arg2 types.HostType) error
- func (m *MockSeedPeer) EXPECT() *MockSeedPeerMockRecorder
- func (m *MockSeedPeer) Stop() error
- func (m *MockSeedPeer) TriggerTask(arg0 context.Context, arg1 *http.Range, arg2 *Task) (*Peer, *v1.PeerResult, error)
- type MockSeedPeerClient
- func (m *MockSeedPeerClient) Close() error
- func (m *MockSeedPeerClient) EXPECT() *MockSeedPeerClientMockRecorder
- func (m *MockSeedPeerClient) GetPieceTasks(arg0 context.Context, arg1 *common.PieceTaskRequest, arg2 ...grpc.CallOption) (*common.PiecePacket, error)
- func (m *MockSeedPeerClient) ObtainSeeds(arg0 context.Context, arg1 *cdnsystem.SeedRequest, arg2 ...grpc.CallOption) (cdnsystem.Seeder_ObtainSeedsClient, error)
- func (m *MockSeedPeerClient) OnNotify(arg0 *config.DynconfigData)
- func (m *MockSeedPeerClient) SyncPieceTasks(arg0 context.Context, arg1 *common.PieceTaskRequest, arg2 ...grpc.CallOption) (cdnsystem.Seeder_SyncPieceTasksClient, error)
- type MockSeedPeerClientMockRecorder
- func (mr *MockSeedPeerClientMockRecorder) Close() *gomock.Call
- func (mr *MockSeedPeerClientMockRecorder) GetPieceTasks(arg0, arg1 interface{}, arg2 ...interface{}) *gomock.Call
- func (mr *MockSeedPeerClientMockRecorder) ObtainSeeds(arg0, arg1 interface{}, arg2 ...interface{}) *gomock.Call
- func (mr *MockSeedPeerClientMockRecorder) OnNotify(arg0 interface{}) *gomock.Call
- func (mr *MockSeedPeerClientMockRecorder) SyncPieceTasks(arg0, arg1 interface{}, arg2 ...interface{}) *gomock.Call
- type MockSeedPeerMockRecorder
- type MockTaskManager
- func (m *MockTaskManager) Delete(arg0 string)
- func (m *MockTaskManager) EXPECT() *MockTaskManagerMockRecorder
- func (m *MockTaskManager) Load(arg0 string) (*Task, bool)
- func (m *MockTaskManager) LoadOrStore(arg0 *Task) (*Task, bool)
- func (m *MockTaskManager) RunGC() error
- func (m *MockTaskManager) Store(arg0 *Task)
- type MockTaskManagerMockRecorder
- func (mr *MockTaskManagerMockRecorder) Delete(arg0 interface{}) *gomock.Call
- func (mr *MockTaskManagerMockRecorder) Load(arg0 interface{}) *gomock.Call
- func (mr *MockTaskManagerMockRecorder) LoadOrStore(arg0 interface{}) *gomock.Call
- func (mr *MockTaskManagerMockRecorder) RunGC() *gomock.Call
- func (mr *MockTaskManagerMockRecorder) Store(arg0 interface{}) *gomock.Call
- type Network
- type Option
- type Peer
- func (p *Peer) AppendPieceCost(duration time.Duration)
- func (p *Peer) CalculatePriority(dynconfig config.DynconfigInterface) commonv2.Priority
- func (p *Peer) Children() []*Peer
- func (p *Peer) DeleteAnnouncePeerStream()
- func (p *Peer) DeletePiece(key int32)
- func (p *Peer) DeleteReportPieceResultStream()
- func (p *Peer) DownloadTinyFile() ([]byte, error)
- func (p *Peer) LoadAnnouncePeerStream() (schedulerv2.Scheduler_AnnouncePeerServer, bool)
- func (p *Peer) LoadPiece(key int32) (*Piece, bool)
- func (p *Peer) LoadReportPieceResultStream() (schedulerv1.Scheduler_ReportPieceResultServer, bool)
- func (p *Peer) Parents() []*Peer
- func (p *Peer) PieceCosts() []time.Duration
- func (p *Peer) StoreAnnouncePeerStream(stream schedulerv2.Scheduler_AnnouncePeerServer)
- func (p *Peer) StorePiece(piece *Piece)
- func (p *Peer) StoreReportPieceResultStream(stream schedulerv1.Scheduler_ReportPieceResultServer)
- type PeerManager
- type PeerOption
- type Piece
- type Resource
- type SeedPeer
- type SeedPeerClient
- type Task
- func (t *Task) AddPeerEdge(fromPeer *Peer, toPeer *Peer) error
- func (t *Task) AnnouncePeers(resp *schedulerv2.AnnouncePeerResponse, event string)
- func (t *Task) CanAddPeerEdge(fromPeerKey, toPeerKey string) bool
- func (t *Task) CanBackToSource() bool
- func (t *Task) CanReuseDirectPiece() bool
- func (t *Task) DeletePeer(key string)
- func (t *Task) DeletePeerInEdges(key string) error
- func (t *Task) DeletePeerOutEdges(key string) error
- func (t *Task) DeletePiece(key int32)
- func (t *Task) HasAvailablePeer(blocklist set.SafeSet[string]) bool
- func (t *Task) IsSeedPeerFailed() bool
- func (t *Task) LoadPeer(key string) (*Peer, bool)
- func (t *Task) LoadPiece(key int32) (*Piece, bool)
- func (t *Task) LoadRandomPeers(n uint) []*Peer
- func (t *Task) LoadSeedPeer() (*Peer, bool)
- func (t *Task) PeerCount() int
- func (t *Task) PeerDegree(key string) (int, error)
- func (t *Task) PeerInDegree(key string) (int, error)
- func (t *Task) PeerOutDegree(key string) (int, error)
- func (t *Task) ReportPieceResultToPeers(peerPacket *schedulerv1.PeerPacket, event string)
- func (t *Task) SizeScope() commonv2.SizeScope
- func (t *Task) StorePeer(peer *Peer)
- func (t *Task) StorePiece(piece *Piece)
- type TaskManager
- type TaskOption
Constants ¶
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" )
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" )
const ( // Tiny file size is 128 bytes. TinyFileSize = 128 // Empty file size is 0 bytes. EmptyFileSize = 0 )
const ( // Peer failure limit in task. FailedPeerCountLimit = 200 // Peer count limit for task. PeerCountLimitForTask = 1000 )
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" )
const ( // Task is downloading. TaskEventDownload = "Download" // Task downloaded successfully. TaskEventDownloadSucceeded = "DownloadSucceeded" // Task downloaded failed. TaskEventDownloadFailed = "DownloadFailed" // Task leaves. TaskEventLeave = "Leave" )
const (
// GC host id.
GCHostID = "host"
)
const (
// GC peer id.
GCPeerID = "peer"
)
const (
// GC task id.
GCTaskID = "task"
)
const ( // Default value of seed peer failed timeout. SeedPeerFailedTimeout = 30 * time.Minute )
Variables ¶
This section is empty.
Functions ¶
func IsPieceBackToSource ¶
IsPieceBackToSource returns whether the piece is downloaded back-to-source.
Types ¶
type Build ¶
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 ¶
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 ¶
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 ¶
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 // 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 // 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) FreeUploadCount ¶
FreeUploadCount return free upload count of host.
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) // 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 WithConcurrentUploadLimit ¶
func WithConcurrentUploadLimit(limit int32) HostOption
WithConcurrentUploadLimit sets host's ConcurrentUploadLimit.
func WithKernelVersion ¶
func WithKernelVersion(kernelVersion string) HostOption
WithKernelVersion sets host's kernel version.
func WithPlatform ¶
func WithPlatform(platform string) HostOption
WithPlatform sets host's platform.
func WithPlatformFamily ¶
func WithPlatformFamily(platformFamily string) HostOption
WithPlatformFamily sets host's platform family.
func WithPlatformVersion ¶
func WithPlatformVersion(platformVersion string) HostOption
WithPlatformVersion sets host's platform version.
type Memory ¶
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 ¶
func (m *MockHostManager) EXPECT() *MockHostManagerMockRecorder
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 ¶
LoadRandomHosts 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 interface{}) *gomock.Call
Delete indicates an expected call of Delete.
func (*MockHostManagerMockRecorder) Load ¶
func (mr *MockHostManagerMockRecorder) Load(arg0 interface{}) *gomock.Call
Load indicates an expected call of Load.
func (*MockHostManagerMockRecorder) LoadOrStore ¶
func (mr *MockHostManagerMockRecorder) LoadOrStore(arg0 interface{}) *gomock.Call
LoadOrStore indicates an expected call of LoadOrStore.
func (*MockHostManagerMockRecorder) LoadRandomHosts ¶
func (mr *MockHostManagerMockRecorder) LoadRandomHosts(arg0, arg1 interface{}) *gomock.Call
LoadRandomHosts indicates an expected call of LoadRandomHosts.
func (*MockHostManagerMockRecorder) RunGC ¶
func (mr *MockHostManagerMockRecorder) RunGC() *gomock.Call
RunGC indicates an expected call of RunGC.
func (*MockHostManagerMockRecorder) Store ¶
func (mr *MockHostManagerMockRecorder) Store(arg0 interface{}) *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 ¶
func (m *MockPeerManager) EXPECT() *MockPeerManagerMockRecorder
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) 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 interface{}) *gomock.Call
Delete indicates an expected call of Delete.
func (*MockPeerManagerMockRecorder) Load ¶
func (mr *MockPeerManagerMockRecorder) Load(arg0 interface{}) *gomock.Call
Load indicates an expected call of Load.
func (*MockPeerManagerMockRecorder) LoadOrStore ¶
func (mr *MockPeerManagerMockRecorder) LoadOrStore(arg0 interface{}) *gomock.Call
LoadOrStore indicates an expected call of LoadOrStore.
func (*MockPeerManagerMockRecorder) RunGC ¶
func (mr *MockPeerManagerMockRecorder) RunGC() *gomock.Call
RunGC indicates an expected call of RunGC.
func (*MockPeerManagerMockRecorder) Store ¶
func (mr *MockPeerManagerMockRecorder) Store(arg0 interface{}) *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 ¶
func (m *MockResource) EXPECT() *MockResourceMockRecorder
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 ¶
func (m *MockResource) SeedPeer() SeedPeer
SeedPeer 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 ¶
func (mr *MockResourceMockRecorder) SeedPeer() *gomock.Call
SeedPeer indicates an expected call of SeedPeer.
func (*MockResourceMockRecorder) Stop ¶
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 ¶
type MockSeedPeer struct {
// contains filtered or unexported fields
}
MockSeedPeer is a mock of SeedPeer interface.
func NewMockSeedPeer ¶
func NewMockSeedPeer(ctrl *gomock.Controller) *MockSeedPeer
NewMockSeedPeer creates a new mock instance.
func (*MockSeedPeer) Client ¶
func (m *MockSeedPeer) Client() SeedPeerClient
Client mocks base method.
func (*MockSeedPeer) DownloadTask ¶
DownloadTask mocks base method.
func (*MockSeedPeer) EXPECT ¶
func (m *MockSeedPeer) EXPECT() *MockSeedPeerMockRecorder
EXPECT returns an object that allows the caller to indicate expected use.
func (*MockSeedPeer) TriggerTask ¶
func (m *MockSeedPeer) TriggerTask(arg0 context.Context, arg1 *http.Range, arg2 *Task) (*Peer, *v1.PeerResult, error)
TriggerTask mocks base method.
type MockSeedPeerClient ¶
type MockSeedPeerClient struct {
// contains filtered or unexported fields
}
MockSeedPeerClient is a mock of SeedPeerClient interface.
func NewMockSeedPeerClient ¶
func NewMockSeedPeerClient(ctrl *gomock.Controller) *MockSeedPeerClient
NewMockSeedPeerClient creates a new mock instance.
func (*MockSeedPeerClient) Close ¶
func (m *MockSeedPeerClient) Close() error
Close mocks base method.
func (*MockSeedPeerClient) EXPECT ¶
func (m *MockSeedPeerClient) EXPECT() *MockSeedPeerClientMockRecorder
EXPECT returns an object that allows the caller to indicate expected use.
func (*MockSeedPeerClient) GetPieceTasks ¶
func (m *MockSeedPeerClient) GetPieceTasks(arg0 context.Context, arg1 *common.PieceTaskRequest, arg2 ...grpc.CallOption) (*common.PiecePacket, error)
GetPieceTasks mocks base method.
func (*MockSeedPeerClient) ObtainSeeds ¶
func (m *MockSeedPeerClient) ObtainSeeds(arg0 context.Context, arg1 *cdnsystem.SeedRequest, arg2 ...grpc.CallOption) (cdnsystem.Seeder_ObtainSeedsClient, error)
ObtainSeeds mocks base method.
func (*MockSeedPeerClient) OnNotify ¶
func (m *MockSeedPeerClient) OnNotify(arg0 *config.DynconfigData)
OnNotify mocks base method.
func (*MockSeedPeerClient) SyncPieceTasks ¶
func (m *MockSeedPeerClient) SyncPieceTasks(arg0 context.Context, arg1 *common.PieceTaskRequest, arg2 ...grpc.CallOption) (cdnsystem.Seeder_SyncPieceTasksClient, error)
SyncPieceTasks mocks base method.
type MockSeedPeerClientMockRecorder ¶
type MockSeedPeerClientMockRecorder struct {
// contains filtered or unexported fields
}
MockSeedPeerClientMockRecorder is the mock recorder for MockSeedPeerClient.
func (*MockSeedPeerClientMockRecorder) Close ¶
func (mr *MockSeedPeerClientMockRecorder) Close() *gomock.Call
Close indicates an expected call of Close.
func (*MockSeedPeerClientMockRecorder) GetPieceTasks ¶
func (mr *MockSeedPeerClientMockRecorder) GetPieceTasks(arg0, arg1 interface{}, arg2 ...interface{}) *gomock.Call
GetPieceTasks indicates an expected call of GetPieceTasks.
func (*MockSeedPeerClientMockRecorder) ObtainSeeds ¶
func (mr *MockSeedPeerClientMockRecorder) ObtainSeeds(arg0, arg1 interface{}, arg2 ...interface{}) *gomock.Call
ObtainSeeds indicates an expected call of ObtainSeeds.
func (*MockSeedPeerClientMockRecorder) OnNotify ¶
func (mr *MockSeedPeerClientMockRecorder) OnNotify(arg0 interface{}) *gomock.Call
OnNotify indicates an expected call of OnNotify.
func (*MockSeedPeerClientMockRecorder) SyncPieceTasks ¶
func (mr *MockSeedPeerClientMockRecorder) SyncPieceTasks(arg0, arg1 interface{}, arg2 ...interface{}) *gomock.Call
SyncPieceTasks indicates an expected call of SyncPieceTasks.
type MockSeedPeerMockRecorder ¶
type MockSeedPeerMockRecorder struct {
// contains filtered or unexported fields
}
MockSeedPeerMockRecorder is the mock recorder for MockSeedPeer.
func (*MockSeedPeerMockRecorder) Client ¶
func (mr *MockSeedPeerMockRecorder) Client() *gomock.Call
Client indicates an expected call of Client.
func (*MockSeedPeerMockRecorder) DownloadTask ¶
func (mr *MockSeedPeerMockRecorder) DownloadTask(arg0, arg1, arg2 interface{}) *gomock.Call
DownloadTask indicates an expected call of DownloadTask.
func (*MockSeedPeerMockRecorder) Stop ¶
func (mr *MockSeedPeerMockRecorder) Stop() *gomock.Call
Stop indicates an expected call of Stop.
func (*MockSeedPeerMockRecorder) TriggerTask ¶
func (mr *MockSeedPeerMockRecorder) TriggerTask(arg0, arg1, arg2 interface{}) *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 ¶
func (m *MockTaskManager) EXPECT() *MockTaskManagerMockRecorder
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) 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 interface{}) *gomock.Call
Delete indicates an expected call of Delete.
func (*MockTaskManagerMockRecorder) Load ¶
func (mr *MockTaskManagerMockRecorder) Load(arg0 interface{}) *gomock.Call
Load indicates an expected call of Load.
func (*MockTaskManagerMockRecorder) LoadOrStore ¶
func (mr *MockTaskManagerMockRecorder) LoadOrStore(arg0 interface{}) *gomock.Call
LoadOrStore indicates an expected call of LoadOrStore.
func (*MockTaskManagerMockRecorder) RunGC ¶
func (mr *MockTaskManagerMockRecorder) RunGC() *gomock.Call
RunGC indicates an expected call of RunGC.
func (*MockTaskManagerMockRecorder) Store ¶
func (mr *MockTaskManagerMockRecorder) Store(arg0 interface{}) *gomock.Call
Store indicates an expected call of Store.
type Network ¶
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 ¶
type Option func(r *resource)
Option is a functional option for configuring the resource.
func WithTransportCredentials ¶
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 // 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, task *Task, host *Host, options ...PeerOption) *Peer
New Peer instance.
func (*Peer) AppendPieceCost ¶
AppendPieceCost append piece cost to costs slice.
func (*Peer) CalculatePriority ¶
func (p *Peer) CalculatePriority(dynconfig config.DynconfigInterface) commonv2.Priority
CalculatePriority returns priority of peer.
func (*Peer) DeleteAnnouncePeerStream ¶
func (p *Peer) DeleteAnnouncePeerStream()
DeleteAnnouncePeerStream deletes the grpc stream of Scheduler_AnnouncePeerServer, Used only in v2 version of the grpc.
func (*Peer) DeletePiece ¶
DeletePiece deletes piece for a key.
func (*Peer) DeleteReportPieceResultStream ¶
func (p *Peer) DeleteReportPieceResultStream()
DeleteReportPieceResultStream deletes the grpc stream of Scheduler_ReportPieceResultServer, Used only in v1 version of the grpc.
func (*Peer) DownloadTinyFile ¶
DownloadTinyFile downloads tiny file from peer without range.
func (*Peer) LoadAnnouncePeerStream ¶
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) LoadReportPieceResultStream ¶
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) PieceCosts ¶
PieceCosts return piece costs slice.
func (*Peer) StoreAnnouncePeerStream ¶
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) StoreReportPieceResultStream ¶
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) // 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 ¶
func WithAnnouncePeerStream(stream schedulerv2.Scheduler_AnnouncePeerServer) PeerOption
WithAnnouncePeerStream set AnnouncePeerStream for peer.
func WithPriority ¶
func WithPriority(priority commonv2.Priority) PeerOption
WithPriority set Priority for peer.
type Piece ¶
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.
type SeedPeer ¶
type SeedPeer interface { // DownloadTask downloads task back-to-source. // Used only in v2 version of the grpc. DownloadTask(context.Context, *Task, types.HostType) 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 ¶
type SeedPeerClient interface { // client is seed peer grpc client interface. client.Client // 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 // Filter url used to generate task id. Filters []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, filters []string, header map[string]string, backToSourceLimit int32, options ...TaskOption) *Task
New task instance.
func (*Task) AddPeerEdge ¶
AddPeerEdge adds inedges between two peers.
func (*Task) AnnouncePeers ¶
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 ¶
CanAddPeerEdge finds whether there are peer circles through depth-first search.
func (*Task) CanBackToSource ¶
CanBackToSource represents whether task can back-to-source.
func (*Task) CanReuseDirectPiece ¶
CanReuseDirectPiece represents whether task can reuse data of direct piece.
func (*Task) DeletePeerInEdges ¶
DeletePeerInEdges deletes inedges of peer.
func (*Task) DeletePeerOutEdges ¶
DeletePeerOutEdges deletes outedges of peer.
func (*Task) DeletePiece ¶
DeletePiece deletes piece for a key.
func (*Task) HasAvailablePeer ¶
HasAvailablePeer returns whether there is an available peer.
func (*Task) IsSeedPeerFailed ¶
IsSeedPeerFailed returns whether the seed peer in the task failed.
func (*Task) LoadRandomPeers ¶
LoadRandomPeers return random peers.
func (*Task) LoadSeedPeer ¶
LoadSeedPeer return latest seed peer in peers sync map.
func (*Task) PeerDegree ¶
PeerDegree returns the degree of peer.
func (*Task) PeerInDegree ¶
PeerInDegree returns the indegree of peer.
func (*Task) PeerOutDegree ¶
PeerOutDegree returns the outdegree of peer.
func (*Task) ReportPieceResultToPeers ¶
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.
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) // Try to reclaim task. RunGC() error }
TaskManager is the interface used for task manager.
type TaskOption ¶
type TaskOption func(task *Task)
TaskOption is a functional option for task.
func WithPieceLength ¶
func WithPieceLength(pieceLength int32) TaskOption
WithPieceLength set PieceLength for task.