pool

package
v0.0.15 Latest Latest
Warning

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

Go to latest
Published: Mar 29, 2024 License: MIT Imports: 5 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type BitSet

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

BitSet 实现

func NewBitSet

func NewBitSet(size int) *BitSet

func (*BitSet) Clear

func (b *BitSet) Clear(i int)

func (*BitSet) IsSet

func (b *BitSet) IsSet(i int) bool

func (*BitSet) Set

func (b *BitSet) Set(i int)

type DeletePieceInfo

type DeletePieceInfo struct {
	Hash   string          // 文件片段的哈希值
	PeerID map[string]bool // 节点是否已经删除该片段对应
}

DeletePieceInfo 表示单个文件片段的信息

type DeleteTask

type DeleteTask struct {
	FileID    string                   // 文件的唯一标识
	PieceInfo map[int]*DeletePieceInfo // 存储每个文件片段的哈希和对应节点ID
	Mu        sync.RWMutex             // 控制对Progress的并发访问
}

DeleteTask 表示单个文件的删除状态

type DownloadPieceInfo

type DownloadPieceInfo struct {
	Hash      string   // 文件片段的哈希值
	PeerID    []string // 该片段对应的节点ID
	IsRSCodes bool     // 是否为纠删码
}

DownloadPieceInfo 表示单个文件片段的信息和对应的节点ID

type DownloadTask

type DownloadTask struct {
	FileID       string                     // 文件的唯一标识
	FileKey      string                     // 文件的密钥
	FileHash     []byte                     // 文件的哈希值(用于文件防篡改)
	Name         string                     // 文件的名称
	Size         int64                      // 文件的长度(以字节为单位)
	TotalPieces  int                        // 文件总片数(数据片段和纠删码片段的总数)
	DataPieces   int                        // 数据片段的数量
	Progress     BitSet                     // 文件下载进度
	PieceInfo    map[int]*DownloadPieceInfo // 存储每个文件片段的哈希和对应节点ID
	ENC          reedsolomon.Encoder        // 纠删码编码器
	Mu           sync.RWMutex               // 控制对Progress的并发访问
	Paused       bool                       // 是否暂停上传
	IsMerged     bool                       // 标识文件是否已经合并
	MergeCounter int                        // 用于跟踪文件合并操作的计数器
}

DownloadTask 表示单个文件的下载状态

type MemoryPool

type MemoryPool struct {
	UploadTasks   map[string]*UploadTask   // 上传任务池
	DownloadTasks map[string]*DownloadTask // 下载任务池
	DeleteTasks   map[string]*DeleteTask   // 删除任务池
	Mu            sync.RWMutex             // 读写互斥锁
}

MemoryPool 定义了文件上传和下载的内存池

func (*MemoryPool) AddDownloadTask

func (pool *MemoryPool) AddDownloadTask(fileID, fileKey string) error

AddDownloadTask 添加一个新的下载任务。如果任务已存在,返回错误。

func (*MemoryPool) AddUploadTask

func (pool *MemoryPool) AddUploadTask(fileID string, totalPieces int) error

AddUploadTask 添加一个新的上传任务

func (*MemoryPool) ClearDownloadTask added in v0.0.5

func (pool *MemoryPool) ClearDownloadTask()

ClearDownloadTask 清空文件的下载任务

func (*MemoryPool) DeleteDownloadTask

func (pool *MemoryPool) DeleteDownloadTask(fileID string)

DeleteDownloadTask 删除指定文件的下载任务

func (*MemoryPool) DeleteUploadTask

func (pool *MemoryPool) DeleteUploadTask(fileID string)

DeleteUploadTask 删除指定文件的上传任务

func (*MemoryPool) GetIncompleteDownloadPieces

func (pool *MemoryPool) GetIncompleteDownloadPieces(fileID string) []string

GetIncompleteDownloadPieces 获取未完成的下载片段的哈希值

func (*MemoryPool) GetIncompleteUploadPieces

func (pool *MemoryPool) GetIncompleteUploadPieces(fileID string) []string

GetIncompleteUploadPieces 获取未完成的上传片段

func (*MemoryPool) IsDownloadComplete

func (pool *MemoryPool) IsDownloadComplete(fileID string) bool

IsDownloadComplete 检查指定文件的下载是否完成

func (*MemoryPool) IsDownloadTaskPaused

func (pool *MemoryPool) IsDownloadTaskPaused(fileID string) (bool, error)

IsDownloadTaskPaused 检查指定的下载任务是否已暂停

func (*MemoryPool) IsUploadComplete

func (pool *MemoryPool) IsUploadComplete(fileID string) bool

IsUploadComplete 检查指定文件的上传是否完成

func (*MemoryPool) IsUploadTaskPaused

func (pool *MemoryPool) IsUploadTaskPaused(fileID string) (bool, error)

IsUploadTaskPaused 检查指定的上传任务是否已暂停

func (*MemoryPool) MarkDownloadPieceComplete

func (pool *MemoryPool) MarkDownloadPieceComplete(fileID string, pieceIndex int) bool

MarkDownloadPieceComplete 标记下载任务中的一个片段为完成,并返回是否所有片段都已下载

func (*MemoryPool) MarkDownloadPieceCompleteByHash

func (pool *MemoryPool) MarkDownloadPieceCompleteByHash(fileID, pieceHash string) bool

MarkDownloadPieceCompleteByHash 根据文件片段的哈希值标记下载任务中的一个片段为完成,并返回是否所有片段都已下载

func (*MemoryPool) MarkUploadPieceComplete

func (pool *MemoryPool) MarkUploadPieceComplete(fileID string, pieceIndex int) bool

MarkUploadPieceComplete 标记上传任务中的一个片段为完成,并返回是否所有片段都已上传

func (*MemoryPool) PauseDownloadTask

func (pool *MemoryPool) PauseDownloadTask(fileID string) error

PauseDownloadTask 暂停指定的下载任务

func (*MemoryPool) PauseUploadTask

func (pool *MemoryPool) PauseUploadTask(fileID string) error

PauseUploadTask 暂停指定的上传任务

func (*MemoryPool) ResetDownloadTask

func (pool *MemoryPool) ResetDownloadTask(fileID string) error

ResetDownloadTask 清除下载任务的所有进度

func (*MemoryPool) ResumeDownloadTask

func (pool *MemoryPool) ResumeDownloadTask(fileID string) error

ResumeDownloadTask 恢复指定的下载任务

func (*MemoryPool) ResumeUploadTask

func (pool *MemoryPool) ResumeUploadTask(fileID string) error

ResumeUploadTask 恢复指定的上传任务

func (*MemoryPool) RevertDownloadPieceProgress

func (pool *MemoryPool) RevertDownloadPieceProgress(fileID, pieceHash string) error

RevertDownloadPieceProgress 回退单个文件片段的下载进度

func (*MemoryPool) UpdateDownloadPieceInfo

func (pool *MemoryPool) UpdateDownloadPieceInfo(peerID string, fileID, name string, size int64, sliceTable map[int]core.HashTable, pieceHashes map[int]string, fileKey ...string)

UpdateDownloadPieceInfo 用于更新下载任务中特定片段的节点信息。 fileID 是文件的唯一标识。 sliceTable 是文件片段的哈希表,其中 key 是文件片段的序号,value 是文件片段的哈希。 peerID 是存储文件片段的节点ID。 fileKey 是文件的密钥,如果提供则更新。

func (*MemoryPool) UpdateUploadPieceInfo

func (pool *MemoryPool) UpdateUploadPieceInfo(fileID string, pieceHash string, pieceInfo *UploadPieceInfo)

UpdateUploadPieceInfo 更新上传任务中特定片段的信息

type NewMemoryPoolOutput

type NewMemoryPoolOutput struct {
	fx.Out
	Pool *MemoryPool // 文件上传内存池
}

func NewMemoryPool

func NewMemoryPool(lc fx.Lifecycle) (out NewMemoryPoolOutput, err error)

NewMemoryPool 初始化一个新的文件上传内存池

type UploadPieceInfo

type UploadPieceInfo struct {
	Index  int      // 文件片段的序列号
	PeerID []string // 节点的host地址
}

UploadPieceInfo 表示单个文件片段的信息

type UploadTask

type UploadTask struct {
	TotalPieces int                         // 文件总片数
	Progress    BitSet                      // 文件上传进度
	PieceInfo   map[string]*UploadPieceInfo // 每个文件片段的详细信息
	Mu          sync.RWMutex                // 控制对Progress的并发访问
	RetryCounts map[int]int                 // 记录失败重试次数的映射
	Paused      bool                        // 是否暂停下载
}

UploadTask 表示单个文件的上传状态

Jump to

Keyboard shortcuts

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