# Functions
Distance 计算两个ID之间的XOR距离。.
FindNearestPeer 根据给定的目标ID和一组节点ID,找到并返回按距离排序的节点信息数组。 func FindNearestPeer(targetID []byte, peers []peer.ID) (*PeerInfo, error) {.
LoadTasksFromFile 从文件加载任务 参数: - filePath: string 文件路径
返回值: - map[string]*UploadTaskSerializable: 任务映射表 - error: 如果发生错误,返回错误信息.
NewFileMeta 创建并初始化一个新的 FileMeta 实例,提供文件的基本元数据信息。 参数: - file: afero.File 文件对象。 - privateKey: *ecdsa.PrivateKey ECDSA 私钥,用于生成文件ID。
返回值: - *FileMeta: 新创建的 FileMeta 实例,包含文件的基本元数据。 - error: 如果发生错误,返回错误信息。.
NewFileSecurity 创建并初始化一个新的FileSecurity实例,封装了文件的安全和权限相关的信息.
NewFileSegment 创建并初始化一个新的 FileSegment 实例,提供分片的详细信息及其上传状态。 参数: - opt: *opts.Options 文件存储选项。 - r: io.Reader 文件读取器。 - fileID: string 文件唯一标识。 - capacity: int64 缓冲区容量。 - dataShards: int64 数据分片数。 - parityShards: int64 奇偶校验分片数。
返回值: - map[int]*FileSegment: 文件分片的映射。 - error: 如果发生错误,返回错误信息。.
NewHashTable 创建并初始化一个映射,映射的键是分片的索引,值是HashTable实例。 它用于描述每个分片的哈希值和是否使用了纠删码技术。.
NewUploadFile 创建并初始化一个新的 UploadFile 实例。 参数: - opt: *opts.Options 文件存储选项。 - ownerPriv: *ecdsa.PrivateKey 文件所有者的私钥。 - file: afero.File 文件对象。 - scheme: *shamir.ShamirScheme Shamir 秘钥共享方案。
返回值: - *UploadFile: 新创建的 UploadFile 实例。 - error: 如果发生错误,返回错误信息。.
NewUploadManager 创建并初始化一个新的UploadManager实例.
NewUploadTask 创建并初始化一个新的文件上传任务实例。 taskID 为任务的唯一标识符。 file 为待上传的文件信息。 maxConcurrency 为任务允许的最大并发上传数。.
RegisterUploadStreamProtocol 注册上传流.
SaveTasksToFile 将任务保存到文件 参数: - filePath: string 文件路径 - tasks: map[string]*UploadTaskSerializable 任务映射表
返回值: - error: 如果发生错误,返回错误信息.
# Constants
取消,用于取消正在进行的上传任务或会话.
暂停,用于暂停正在进行的上传任务或会话.
恢复,用于继续已暂停的上传任务或会话.
开始,用于启动一项上传任务或会话.
文件错误,指示与文件相关的错误,如文件损坏、文件格式不支持等.
网络错误,指示上传过程中遇到的网络问题,如连接断开、超时等.
存储错误,指示存储操作失败的问题,如磁盘空间不足、权限问题等.
系统错误,指示上传过程中发生的系统级别错误,如资源不足、服务不可达等.
表示错误通知事件.
表示任务状态更新事件.
任务允许的最大并发上传数.
允许的最大并发会话数.
已完成,文件片段已成功上传.
失败,文件片段上传失败.
尚未准备好,文件片段尚未准备好.
待上传,文件片段已准备好待上传但尚未开始.
上传中,文件片段正在上传过程中.
会话超时时间设置为10分钟.
已完成,任务已成功完成所有上传操作.
失败,任务由于某些错误未能成功完成.
已暂停,任务已被暂停,可通过恢复操作继续执行.
待上传,任务已创建但尚未开始执行.
上传中,任务正在执行文件上传操作.
Shamir秘密共享方案的阈值,即需要恢复秘密的最小份额数.
Shamir秘密共享方案的总份额数.
# Structs
FileMeta 代表文件的基本元数据信息 它为文件上传提供了必要的描述信息,如文件大小、类型等.
FileSecurity 封装了文件的安全和权限相关的信息.
FileSecuritySerializable 是 FileSecurity 的可序列化版本.
FileSegment 描述一个文件分片的详细信息及其上传状态 文件被分割成多个片段独立上传,以支持大文件的高效传输和断点续传.
FileSegmentInfo 用于发送文件片段信息到网络.
HashTable 描述分片的校验和是否属于纠删码.
NetworkResponse 表示从网络接收到的响应信息.
No description provided by the author
No description provided by the author
PeerDistanceInfo 包含单个peer的距离信息.
对等距离的请求消息.
PeerInfo 表示一组网络节点的基本信息,包括节点ID数组、与给定ID的距离,以及最近的节点是否为本地节点的标志。.
No description provided by the author
发送任务到网络的请求消息.
发送任务到网络的响应消息.
流协议.
UploadChan 用于表示上传任务的通道信息.
UploadFile 包含待上传文件的详细信息及其分片信息 它是上传任务的核心部分,定义了文件如何被处理和上传.
UploadManager 管理所有上传任务,提供文件上传的统一入口和管理功能 它负责协调上传任务的执行,管理任务的生命周期,以及通知任务的状态更新和错误事件.
UploadSuccessInfo 用于封装文件上传成功后的返回信息。.
UploadTask 描述一个文件上传任务,包括文件信息和上传状态 它封装了单个文件上传的细节,如文件元数据、上传进度、状态控制等.
UploadTaskSerializable 是 UploadTask 的可序列化版本.
# Type aliases
ControlCommand 定义了控制上传任务的命令类型,如暂停、恢复等.
ErrorType 定义了错误的类型,用于分类不同来源的错误.
EventType 定义了上传事件的类型,用于区分不同的事件,如任务状态更新和错误通知.
SegmentUploadStatus 表示文件片段的上传状态.
UploadStatus 表示上传任务的状态.