peer

package
v2.0.5 Latest Latest
Warning

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

Go to latest
Published: Jul 28, 2022 License: Apache-2.0 Imports: 41 Imported by: 0

Documentation

Overview

Package peer is a generated GoMock package.

Package peer is a generated GoMock package.

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func WithCalculateDigest

func WithCalculateDigest(enable bool) func(*pieceManager)

func WithConcurrentOption added in v2.0.5

func WithConcurrentOption(opt *config.ConcurrentOption) func(*pieceManager)

func WithLimiter

func WithLimiter(limiter *rate.Limiter) func(*pieceManager)

WithLimiter sets upload rate limiter, the burst size must be bigger than piece size

func WithTransport

func WithTransport(rt http.RoundTripper) func(*pieceDownloader) error

func WithTransportOption added in v2.0.1

func WithTransportOption(opt *config.TransportOption) func(*pieceManager)

Types

type Bitmap

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

func NewBitmap

func NewBitmap() *Bitmap

func NewBitmapWithCap

func NewBitmapWithCap(c int32) *Bitmap

func (*Bitmap) Clean added in v2.0.2

func (b *Bitmap) Clean(i int32)

func (*Bitmap) IsSet

func (b *Bitmap) IsSet(i int32) bool

func (*Bitmap) Set

func (b *Bitmap) Set(i int32)

func (*Bitmap) Sets

func (b *Bitmap) Sets(xs ...int32)

func (*Bitmap) Settled

func (b *Bitmap) Settled() int32

type DownloadPieceRequest

type DownloadPieceRequest struct {
	TaskID     string
	PeerID     string
	DstPid     string
	DstAddr    string
	CalcDigest bool
	// contains filtered or unexported fields
}

type DownloadPieceResult added in v2.0.2

type DownloadPieceResult struct {
	// Size of piece
	Size int64
	// BeginTime nanosecond
	BeginTime int64
	// FinishTime nanosecond
	FinishTime int64
}

type FileTask added in v2.0.2

type FileTask interface {
	Start(ctx context.Context) (chan *FileTaskProgress, error)
}

FileTask represents a peer task to download a file

type FileTaskProgress added in v2.0.2

type FileTaskProgress struct {
	State           *ProgressState
	TaskID          string
	PeerID          string
	ContentLength   int64
	CompletedLength int64
	PeerTaskDone    bool
	DoneCallback    func()
}

type FileTaskRequest added in v2.0.2

type FileTaskRequest struct {
	scheduler.PeerTaskRequest
	Output             string
	Limit              float64
	DisableBackSource  bool
	Callsystem         string
	Range              *util.Range
	KeepOriginalOffset bool
}

type IDGenerator added in v2.0.2

type IDGenerator interface {
	PeerID() string
}

func NewPeerIDGenerator added in v2.0.2

func NewPeerIDGenerator(ip string) IDGenerator

type Logger added in v2.0.2

type Logger interface {
	Log() *logger.SugaredLoggerOnWith
}

type MockLogger added in v2.0.4

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

MockLogger is a mock of Logger interface.

func NewMockLogger added in v2.0.4

func NewMockLogger(ctrl *gomock.Controller) *MockLogger

NewMockLogger creates a new mock instance.

func (*MockLogger) EXPECT added in v2.0.4

func (m *MockLogger) EXPECT() *MockLoggerMockRecorder

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

func (*MockLogger) Log added in v2.0.4

Log mocks base method.

type MockLoggerMockRecorder added in v2.0.4

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

MockLoggerMockRecorder is the mock recorder for MockLogger.

func (*MockLoggerMockRecorder) Log added in v2.0.4

func (mr *MockLoggerMockRecorder) Log() *gomock.Call

Log indicates an expected call of Log.

type MockPieceDownloader added in v2.0.4

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

MockPieceDownloader is a mock of PieceDownloader interface.

func NewMockPieceDownloader added in v2.0.4

func NewMockPieceDownloader(ctrl *gomock.Controller) *MockPieceDownloader

NewMockPieceDownloader creates a new mock instance.

func (*MockPieceDownloader) DownloadPiece added in v2.0.4

func (m *MockPieceDownloader) DownloadPiece(arg0 context.Context, arg1 *DownloadPieceRequest) (io.Reader, io.Closer, error)

DownloadPiece mocks base method.

func (*MockPieceDownloader) EXPECT added in v2.0.4

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

type MockPieceDownloaderMockRecorder added in v2.0.4

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

MockPieceDownloaderMockRecorder is the mock recorder for MockPieceDownloader.

func (*MockPieceDownloaderMockRecorder) DownloadPiece added in v2.0.4

func (mr *MockPieceDownloaderMockRecorder) DownloadPiece(arg0, arg1 interface{}) *gomock.Call

DownloadPiece indicates an expected call of DownloadPiece.

type MockTask added in v2.0.4

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

MockTask is a mock of Task interface.

func NewMockTask added in v2.0.4

func NewMockTask(ctrl *gomock.Controller) *MockTask

NewMockTask creates a new mock instance.

func (*MockTask) AddTraffic added in v2.0.4

func (m *MockTask) AddTraffic(arg0 uint64)

AddTraffic mocks base method.

func (*MockTask) Context added in v2.0.4

func (m *MockTask) Context() context.Context

Context mocks base method.

func (*MockTask) EXPECT added in v2.0.4

func (m *MockTask) EXPECT() *MockTaskMockRecorder

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

func (*MockTask) GetContentLength added in v2.0.4

func (m *MockTask) GetContentLength() int64

GetContentLength mocks base method.

func (*MockTask) GetPeerID added in v2.0.4

func (m *MockTask) GetPeerID() string

GetPeerID mocks base method.

func (*MockTask) GetPieceMd5Sign added in v2.0.4

func (m *MockTask) GetPieceMd5Sign() string

GetPieceMd5Sign mocks base method.

func (*MockTask) GetStorage added in v2.0.4

func (m *MockTask) GetStorage() storage.TaskStorageDriver

GetStorage mocks base method.

func (*MockTask) GetTaskID added in v2.0.4

func (m *MockTask) GetTaskID() string

GetTaskID mocks base method.

func (*MockTask) GetTotalPieces added in v2.0.4

func (m *MockTask) GetTotalPieces() int32

GetTotalPieces mocks base method.

func (*MockTask) GetTraffic added in v2.0.4

func (m *MockTask) GetTraffic() uint64

GetTraffic mocks base method.

func (*MockTask) Log added in v2.0.4

Log mocks base method.

func (*MockTask) PublishPieceInfo added in v2.0.4

func (m *MockTask) PublishPieceInfo(pieceNum int32, size uint32)

PublishPieceInfo mocks base method.

func (*MockTask) ReportPieceResult added in v2.0.4

func (m *MockTask) ReportPieceResult(request *DownloadPieceRequest, result *DownloadPieceResult, err error)

ReportPieceResult mocks base method.

func (*MockTask) SetContentLength added in v2.0.4

func (m *MockTask) SetContentLength(arg0 int64)

SetContentLength mocks base method.

func (*MockTask) SetPieceMd5Sign added in v2.0.4

func (m *MockTask) SetPieceMd5Sign(arg0 string)

SetPieceMd5Sign mocks base method.

func (*MockTask) SetTotalPieces added in v2.0.4

func (m *MockTask) SetTotalPieces(arg0 int32)

SetTotalPieces mocks base method.

func (*MockTask) UpdateSourceErrorStatus added in v2.0.5

func (m *MockTask) UpdateSourceErrorStatus(st *status.Status)

UpdateSourceErrorStatus mocks base method.

type MockTaskManager added in v2.0.4

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

MockTaskManager is a mock of TaskManager interface.

func NewMockTaskManager added in v2.0.4

func NewMockTaskManager(ctrl *gomock.Controller) *MockTaskManager

NewMockTaskManager creates a new mock instance.

func (*MockTaskManager) AnnouncePeerTask added in v2.0.4

func (m *MockTaskManager) AnnouncePeerTask(ctx context.Context, meta storage.PeerTaskMetadata, url string, taskType base.TaskType, urlMeta *base.UrlMeta) error

AnnouncePeerTask mocks base method.

func (*MockTaskManager) EXPECT added in v2.0.4

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

func (*MockTaskManager) GetPieceManager added in v2.0.4

func (m *MockTaskManager) GetPieceManager() PieceManager

GetPieceManager mocks base method.

func (*MockTaskManager) IsPeerTaskRunning added in v2.0.4

func (m *MockTaskManager) IsPeerTaskRunning(taskID string) (Task, bool)

IsPeerTaskRunning mocks base method.

func (*MockTaskManager) StartFileTask added in v2.0.4

func (m *MockTaskManager) StartFileTask(ctx context.Context, req *FileTaskRequest) (chan *FileTaskProgress, *TinyData, error)

StartFileTask mocks base method.

func (*MockTaskManager) StartSeedTask added in v2.0.4

func (m *MockTaskManager) StartSeedTask(ctx context.Context, req *SeedTaskRequest) (*SeedTaskResponse, bool, error)

StartSeedTask mocks base method.

func (*MockTaskManager) StartStreamTask added in v2.0.4

func (m *MockTaskManager) StartStreamTask(ctx context.Context, req *StreamTaskRequest) (io.ReadCloser, map[string]string, error)

StartStreamTask mocks base method.

func (*MockTaskManager) StatTask added in v2.0.4

func (m *MockTaskManager) StatTask(ctx context.Context, taskID string) (*scheduler.Task, error)

StatTask mocks base method.

func (*MockTaskManager) Stop added in v2.0.4

func (m *MockTaskManager) Stop(ctx context.Context) error

Stop mocks base method.

func (*MockTaskManager) Subscribe added in v2.0.4

func (m *MockTaskManager) Subscribe(request *base.PieceTaskRequest) (*SubscribeResponse, bool)

Subscribe mocks base method.

type MockTaskManagerMockRecorder added in v2.0.4

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

MockTaskManagerMockRecorder is the mock recorder for MockTaskManager.

func (*MockTaskManagerMockRecorder) AnnouncePeerTask added in v2.0.4

func (mr *MockTaskManagerMockRecorder) AnnouncePeerTask(ctx, meta, url, taskType, urlMeta interface{}) *gomock.Call

AnnouncePeerTask indicates an expected call of AnnouncePeerTask.

func (*MockTaskManagerMockRecorder) GetPieceManager added in v2.0.4

func (mr *MockTaskManagerMockRecorder) GetPieceManager() *gomock.Call

GetPieceManager indicates an expected call of GetPieceManager.

func (*MockTaskManagerMockRecorder) IsPeerTaskRunning added in v2.0.4

func (mr *MockTaskManagerMockRecorder) IsPeerTaskRunning(taskID interface{}) *gomock.Call

IsPeerTaskRunning indicates an expected call of IsPeerTaskRunning.

func (*MockTaskManagerMockRecorder) StartFileTask added in v2.0.4

func (mr *MockTaskManagerMockRecorder) StartFileTask(ctx, req interface{}) *gomock.Call

StartFileTask indicates an expected call of StartFileTask.

func (*MockTaskManagerMockRecorder) StartSeedTask added in v2.0.4

func (mr *MockTaskManagerMockRecorder) StartSeedTask(ctx, req interface{}) *gomock.Call

StartSeedTask indicates an expected call of StartSeedTask.

func (*MockTaskManagerMockRecorder) StartStreamTask added in v2.0.4

func (mr *MockTaskManagerMockRecorder) StartStreamTask(ctx, req interface{}) *gomock.Call

StartStreamTask indicates an expected call of StartStreamTask.

func (*MockTaskManagerMockRecorder) StatTask added in v2.0.4

func (mr *MockTaskManagerMockRecorder) StatTask(ctx, taskID interface{}) *gomock.Call

StatTask indicates an expected call of StatTask.

func (*MockTaskManagerMockRecorder) Stop added in v2.0.4

func (mr *MockTaskManagerMockRecorder) Stop(ctx interface{}) *gomock.Call

Stop indicates an expected call of Stop.

func (*MockTaskManagerMockRecorder) Subscribe added in v2.0.4

func (mr *MockTaskManagerMockRecorder) Subscribe(request interface{}) *gomock.Call

Subscribe indicates an expected call of Subscribe.

type MockTaskMockRecorder added in v2.0.4

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

MockTaskMockRecorder is the mock recorder for MockTask.

func (*MockTaskMockRecorder) AddTraffic added in v2.0.4

func (mr *MockTaskMockRecorder) AddTraffic(arg0 interface{}) *gomock.Call

AddTraffic indicates an expected call of AddTraffic.

func (*MockTaskMockRecorder) Context added in v2.0.4

func (mr *MockTaskMockRecorder) Context() *gomock.Call

Context indicates an expected call of Context.

func (*MockTaskMockRecorder) GetContentLength added in v2.0.4

func (mr *MockTaskMockRecorder) GetContentLength() *gomock.Call

GetContentLength indicates an expected call of GetContentLength.

func (*MockTaskMockRecorder) GetPeerID added in v2.0.4

func (mr *MockTaskMockRecorder) GetPeerID() *gomock.Call

GetPeerID indicates an expected call of GetPeerID.

func (*MockTaskMockRecorder) GetPieceMd5Sign added in v2.0.4

func (mr *MockTaskMockRecorder) GetPieceMd5Sign() *gomock.Call

GetPieceMd5Sign indicates an expected call of GetPieceMd5Sign.

func (*MockTaskMockRecorder) GetStorage added in v2.0.4

func (mr *MockTaskMockRecorder) GetStorage() *gomock.Call

GetStorage indicates an expected call of GetStorage.

func (*MockTaskMockRecorder) GetTaskID added in v2.0.4

func (mr *MockTaskMockRecorder) GetTaskID() *gomock.Call

GetTaskID indicates an expected call of GetTaskID.

func (*MockTaskMockRecorder) GetTotalPieces added in v2.0.4

func (mr *MockTaskMockRecorder) GetTotalPieces() *gomock.Call

GetTotalPieces indicates an expected call of GetTotalPieces.

func (*MockTaskMockRecorder) GetTraffic added in v2.0.4

func (mr *MockTaskMockRecorder) GetTraffic() *gomock.Call

GetTraffic indicates an expected call of GetTraffic.

func (*MockTaskMockRecorder) Log added in v2.0.4

func (mr *MockTaskMockRecorder) Log() *gomock.Call

Log indicates an expected call of Log.

func (*MockTaskMockRecorder) PublishPieceInfo added in v2.0.4

func (mr *MockTaskMockRecorder) PublishPieceInfo(pieceNum, size interface{}) *gomock.Call

PublishPieceInfo indicates an expected call of PublishPieceInfo.

func (*MockTaskMockRecorder) ReportPieceResult added in v2.0.4

func (mr *MockTaskMockRecorder) ReportPieceResult(request, result, err interface{}) *gomock.Call

ReportPieceResult indicates an expected call of ReportPieceResult.

func (*MockTaskMockRecorder) SetContentLength added in v2.0.4

func (mr *MockTaskMockRecorder) SetContentLength(arg0 interface{}) *gomock.Call

SetContentLength indicates an expected call of SetContentLength.

func (*MockTaskMockRecorder) SetPieceMd5Sign added in v2.0.4

func (mr *MockTaskMockRecorder) SetPieceMd5Sign(arg0 interface{}) *gomock.Call

SetPieceMd5Sign indicates an expected call of SetPieceMd5Sign.

func (*MockTaskMockRecorder) SetTotalPieces added in v2.0.4

func (mr *MockTaskMockRecorder) SetTotalPieces(arg0 interface{}) *gomock.Call

SetTotalPieces indicates an expected call of SetTotalPieces.

func (*MockTaskMockRecorder) UpdateSourceErrorStatus added in v2.0.5

func (mr *MockTaskMockRecorder) UpdateSourceErrorStatus(st interface{}) *gomock.Call

UpdateSourceErrorStatus indicates an expected call of UpdateSourceErrorStatus.

type PieceDownloader

type PieceDownloader interface {
	DownloadPiece(context.Context, *DownloadPieceRequest) (io.Reader, io.Closer, error)
}

func NewPieceDownloader

func NewPieceDownloader(timeout time.Duration, opts ...func(*pieceDownloader) error) (PieceDownloader, error)

type PieceInfo added in v2.0.2

type PieceInfo struct {
	// Num is the current piece num
	Num int32
	// OrderedNum is the max pieces num with ordered, eg: 0 1 2 3 5 7 8, the OrderedNum is 3
	OrderedNum int32
	Finished   bool
}

type PieceManager

type PieceManager interface {
	DownloadSource(ctx context.Context, pt Task, request *scheduler.PeerTaskRequest, parsedRange *clientutil.Range) error
	DownloadPiece(ctx context.Context, request *DownloadPieceRequest) (*DownloadPieceResult, error)
	ImportFile(ctx context.Context, ptm storage.PeerTaskMetadata, tsd storage.TaskStorageDriver, req *dfdaemon.ImportTaskRequest) error
	Import(ctx context.Context, ptm storage.PeerTaskMetadata, tsd storage.TaskStorageDriver, contentLength int64, reader io.Reader) error
}

func NewPieceManager

func NewPieceManager(pieceDownloadTimeout time.Duration, opts ...func(*pieceManager)) (PieceManager, error)

type ProgressState

type ProgressState struct {
	Success bool
	Code    base.Code
	Msg     string
}

type SeedTask added in v2.0.3

type SeedTask interface {
	Start(ctx context.Context) (chan *SeedTaskProgress, error)
}

SeedTask represents a seed peer task

type SeedTaskProgress added in v2.0.3

type SeedTaskProgress struct {
	State           *ProgressState
	TaskID          string
	PeerID          string
	ContentLength   int64
	CompletedLength int64
	PeerTaskDone    bool
}

type SeedTaskRequest added in v2.0.3

type SeedTaskRequest struct {
	scheduler.PeerTaskRequest
	Limit      float64
	Callsystem string
	Range      *util.Range
}

type SeedTaskResponse added in v2.0.3

type SeedTaskResponse struct {
	SubscribeResponse
	Context context.Context
	Span    trace.Span
	TaskID  string
	PeerID  string
}

type StreamTask added in v2.0.2

type StreamTask interface {
	// Start starts the special peer task, return an io.Reader for stream io
	// when all data transferred, reader return an io.EOF
	// attribute stands some extra data, like HTTP response Header
	Start(ctx context.Context) (rc io.ReadCloser, attribute map[string]string, err error)
}

StreamTask represents a peer task with stream io for reading directly without once more disk io

type StreamTaskRequest added in v2.0.2

type StreamTaskRequest struct {
	// universal resource locator for different kind of storage
	URL string
	// url meta info
	URLMeta *base.UrlMeta
	// http range
	Range *util.Range
	// peer's id and must be global uniqueness
	PeerID string
	// Pattern to register to scheduler
	Pattern base.Pattern
}

type SubscribeResponse added in v2.0.3

type SubscribeResponse struct {
	Storage          storage.TaskStorageDriver
	PieceInfoChannel chan *PieceInfo
	Success          chan struct{}
	Fail             chan struct{}
	FailReason       func() error
}

type Task

type Task interface {
	Logger
	Context() context.Context
	Log() *logger.SugaredLoggerOnWith

	GetStorage() storage.TaskStorageDriver

	GetPeerID() string
	GetTaskID() string

	GetTotalPieces() int32
	SetTotalPieces(int32)

	GetContentLength() int64
	SetContentLength(int64)

	AddTraffic(uint64)
	GetTraffic() uint64

	SetPieceMd5Sign(string)
	GetPieceMd5Sign() string

	PublishPieceInfo(pieceNum int32, size uint32)
	ReportPieceResult(request *DownloadPieceRequest, result *DownloadPieceResult, err error)

	UpdateSourceErrorStatus(st *status.Status)
}

Task represents common interface to operate a peer task

type TaskManager

type TaskManager interface {
	// StartFileTask starts a peer task to download a file
	// return a progress channel for request download progress
	// tiny stands task file is tiny and task is done
	StartFileTask(ctx context.Context, req *FileTaskRequest) (
		progress chan *FileTaskProgress, tiny *TinyData, err error)
	// StartStreamTask starts a peer task with stream io
	StartStreamTask(ctx context.Context, req *StreamTaskRequest) (
		readCloser io.ReadCloser, attribute map[string]string, err error)
	// StartSeedTask starts a seed peer task
	StartSeedTask(ctx context.Context, req *SeedTaskRequest) (
		seedTaskResult *SeedTaskResponse, reuse bool, err error)

	Subscribe(request *base.PieceTaskRequest) (*SubscribeResponse, bool)

	IsPeerTaskRunning(taskID string) (Task, bool)

	// StatTask checks whether the given task exists in P2P network
	StatTask(ctx context.Context, taskID string) (*scheduler.Task, error)

	// AnnouncePeerTask announces peer task info to P2P network
	AnnouncePeerTask(ctx context.Context, meta storage.PeerTaskMetadata, url string, taskType base.TaskType, urlMeta *base.UrlMeta) error

	GetPieceManager() PieceManager

	// Stop stops the PeerTaskManager
	Stop(ctx context.Context) error
}

TaskManager processes all peer tasks request

func NewPeerTaskManager

func NewPeerTaskManager(
	host *scheduler.PeerHost,
	pieceManager PieceManager,
	storageManager storage.Manager,
	schedulerClient schedulerclient.Client,
	schedulerOption config.SchedulerOption,
	perPeerRateLimit rate.Limit,
	multiplex bool,
	prefetch bool,
	calculateDigest bool,
	getPiecesMaxRetry int,
	watchdog time.Duration) (TaskManager, error)

type TinyData

type TinyData struct {
	TaskID  string
	PeerID  string
	Content []byte
}

Jump to

Keyboard shortcuts

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