Documentation ¶
Index ¶
- type BitSet
- type DeletePieceInfo
- type DeleteTask
- type DownloadPieceInfo
- type DownloadTask
- type MemoryPool
- func (pool *MemoryPool) AddDownloadTask(fileID, fileKey string) error
- func (pool *MemoryPool) AddUploadTask(fileID string, totalPieces int) error
- func (pool *MemoryPool) ClearDownloadTask()
- func (pool *MemoryPool) DeleteDownloadTask(fileID string)
- func (pool *MemoryPool) DeleteUploadTask(fileID string)
- func (pool *MemoryPool) GetIncompleteDownloadPieces(fileID string) []string
- func (pool *MemoryPool) GetIncompleteUploadPieces(fileID string) []string
- func (pool *MemoryPool) IsDownloadComplete(fileID string) bool
- func (pool *MemoryPool) IsDownloadTaskPaused(fileID string) (bool, error)
- func (pool *MemoryPool) IsUploadComplete(fileID string) bool
- func (pool *MemoryPool) IsUploadTaskPaused(fileID string) (bool, error)
- func (pool *MemoryPool) MarkDownloadPieceComplete(fileID string, pieceIndex int) bool
- func (pool *MemoryPool) MarkDownloadPieceCompleteByHash(fileID, pieceHash string) bool
- func (pool *MemoryPool) MarkUploadPieceComplete(fileID string, pieceIndex int) bool
- func (pool *MemoryPool) PauseDownloadTask(fileID string) error
- func (pool *MemoryPool) PauseUploadTask(fileID string) error
- func (pool *MemoryPool) ResetDownloadTask(fileID string) error
- func (pool *MemoryPool) ResumeDownloadTask(fileID string) error
- func (pool *MemoryPool) ResumeUploadTask(fileID string) error
- func (pool *MemoryPool) RevertDownloadPieceProgress(fileID, pieceHash string) error
- func (pool *MemoryPool) UpdateDownloadPieceInfo(peerID string, fileID, name string, size int64, ...)
- func (pool *MemoryPool) UpdateUploadPieceInfo(fileID string, pieceHash string, pieceInfo *UploadPieceInfo)
- type NewMemoryPoolOutput
- type UploadPieceInfo
- type UploadTask
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type DeletePieceInfo ¶
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 ¶
UploadPieceInfo 表示单个文件片段的信息