Documentation ¶
Overview ¶
Package defs 提供了DeFS去中心化存储系统的核心定义和接口
Index ¶
- Variables
- type DeFS
- func (fs *DeFS) AddPubSubPeer(peer peer.ID) error
- func (fs *DeFS) AddRoutingPeer(pi peer.AddrInfo, mode int) (bool, error)
- func (fs *DeFS) Afero() afero.Afero
- func (fs *DeFS) Ctx() context.Context
- func (fs *DeFS) DB() *database.DB
- func (fs *DeFS) Download() *downloads.DownloadManager
- func (fs *DeFS) Host() host.Host
- func (fs *DeFS) NodePubSub() *pubsub.NodePubSub
- func (fs *DeFS) Opt() *fscfg.Options
- func (fs *DeFS) RoutingTable() *kbucket.RoutingTable
- func (fs *DeFS) Upload() *uploads.UploadManager
Constants ¶
This section is empty.
Variables ¶
View Source
var NoOpThreshold = 100 * time.Hour
NoOpThreshold 表示无操作的时间阈值,设定为 100 小时
Functions ¶
This section is empty.
Types ¶
type DeFS ¶
type DeFS struct {
// contains filtered or unexported fields
}
DeFS 是一个封装了DeFS去中心化(动态)存储的结构体
func Open ¶
Open 创建并返回一个新的DeFS实例 参数:
- h: libp2p网络主机实例
- options: 可选的配置选项列表
返回值:
- *DeFS: 新创建的DeFS实例
- error: 如果创建过程中发生错误则返回错误信息
示例:
defs, err := Open(h,
fscfg.WithBucketSize(200),// 设置桶大小为 200 fscfg.WithMaxPeersPerCpl(10),// 每个 CPL 最多允许 10 个节点 // PubSub 相关配置 fscfg.WithPubSubOption(pubsub.WithSetFollowupTime(1 * time.Second)), fscfg.WithPubSubOption(pubsub.WithSetGossipFactor(0.3)), fscfg.WithPubSubOption(pubsub.WithSetMaxMessageSize(2 << 20)), fscfg.WithPubSubOption(pubsub.WithNodeDiscovery(d)),
)
if err != nil { logger.Errorf("创建DeFS实例失败: %v", err) return nil, err }
func (*DeFS) AddRoutingPeer ¶
AddRoutingPeer 尝试将对等节点添加到路由表 参数:
- pi: 要添加的对等节点地址信息
- mode: 运行模式 (建议:0:客户端 1:服务端,可根据实际需求设置)
返回值:
- bool: 如果对等节点成功添加则返回 true
- error: 如果添加失败则返回错误
说明:
- 所有添加的节点都被视为非查询节点(queryPeer=false)
- 所有添加的节点都被设置为可替换(isReplaceable=true)
- 这样设计可以保证路由表的动态性和新鲜度
func (*DeFS) Download ¶
func (fs *DeFS) Download() *downloads.DownloadManager
Download 获取下载管理器实例 返回值:
- *downloads.DownloadManager: 下载管理器实例
func (*DeFS) NodePubSub ¶
func (fs *DeFS) NodePubSub() *pubsub.NodePubSub
NodePubSub 返回发布订阅系统 返回值:
- *pubsub.NodePubSub: 发布订阅系统
func (*DeFS) RoutingTable ¶
func (fs *DeFS) RoutingTable() *kbucket.RoutingTable
RoutingTable 获取客户端实例 返回值:
- *kbucket.RoutingTable : 路由表实例
func (*DeFS) Upload ¶
func (fs *DeFS) Upload() *uploads.UploadManager
Upload 获取上传管理器实例 返回值:
- *uploads.UploadManager: 上传管理器实例
Directories ¶
Path | Synopsis |
---|---|
badgerhold 是一个基于 Badger DB 之上的索引和查询层。
|
badgerhold 是一个基于 Badger DB 之上的索引和查询层。 |
Package bitset 实现了位集合,它是一个在非负整数和布尔值之间的映射。
|
Package bitset 实现了位集合,它是一个在非负整数和布尔值之间的映射。 |
crypto
|
|
Package database 提供数据库相关的操作功能
|
Package database 提供数据库相关的操作功能 |
package downloads_ 提供了文件下载相关的功能
|
package downloads_ 提供了文件下载相关的功能 |
Package main 是DeFS系统的主包
|
Package main 是DeFS系统的主包 |
Package files 提供文件操作相关的功能
|
Package files 提供文件操作相关的功能 |
Package kbucket 提供了基于Kademlia DHT的路由表实现
|
Package kbucket 提供了基于Kademlia DHT的路由表实现 |
generate
Package main 实现了一个用于生成键前缀映射的工具
|
Package main 实现了一个用于生成键前缀映射的工具 |
Package defs 提供了DeFS去中心化存储系统的网络握手协议实现
|
Package defs 提供了DeFS去中心化存储系统的网络握手协议实现 |
operate
|
|
Package reedsolomon 提供Go语言的纠删码功能
|
Package reedsolomon 提供Go语言的纠删码功能 |
Package segment 提供了基本数据类型的编解码功能 支持所有Go语言的基本类型,包括整数、浮点数、复数、字符串、字节数组和布尔值
|
Package segment 提供了基本数据类型的编解码功能 支持所有Go语言的基本类型,包括整数、浮点数、复数、字符串、字节数组和布尔值 |
sign
|
|
// tarfs 包实现了 tar 档案的只读内存表示
|
// tarfs 包实现了 tar 档案的只读内存表示 |
Package uploads 提供文件上传相关的功能实现
|
Package uploads 提供文件上传相关的功能实现 |
utils
|
|
zip
|
|
Click to show internal directories.
Click to hide internal directories.