Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
G
go-ipfs
概览
概览
详情
活动
周期分析
版本库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
统计图
问题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程表
图表
维基
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
jihao
go-ipfs
Commits
737508c6
Unverified
提交
737508c6
authored
3月 27, 2019
作者:
Michael Avila
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Add reprovider
License: MIT Signed-off-by:
Michael Avila
<
davidmichaelavila@gmail.com
>
上级
67603331
隐藏空白字符变更
内嵌
并排
正在显示
3 个修改的文件
包含
19 行增加
和
46 行删除
+19
-46
builder.go
core/builder.go
+8
-3
core.go
core/core.go
+8
-40
reprovider.go
provider/reprovider.go
+3
-3
没有找到文件。
core/builder.go
浏览文件 @
737508c6
...
...
@@ -277,14 +277,19 @@ func setupNode(ctx context.Context, n *IpfsNode, cfg *BuildCfg) error {
n
.
Resolver
=
resolver
.
NewBasicResolver
(
n
.
DAG
)
// Provider
queue
,
err
:=
provider
.
NewQueue
(
ctx
,
"provider-v1"
,
n
.
Repo
.
Datastore
())
queue
P
,
err
:=
provider
.
NewQueue
(
ctx
,
"provider-v1"
,
n
.
Repo
.
Datastore
())
if
err
!=
nil
{
return
err
}
tracker
:=
provider
.
NewTracker
(
n
.
Repo
.
Datastore
())
n
.
Provider
=
provider
.
NewProvider
(
ctx
,
queueP
,
tracker
,
n
.
Routing
)
n
.
Provider
=
provider
.
NewProvider
(
ctx
,
queue
,
tracker
,
n
.
Routing
)
// Reprovider
queueR
,
err
:=
provider
.
NewQueue
(
ctx
,
"reprovider-v1"
,
n
.
Repo
.
Datastore
())
if
err
!=
nil
{
return
err
}
n
.
Reprovider
=
provider
.
NewReprovider
(
ctx
,
queueR
,
tracker
,
time
.
Minute
,
time
.
Hour
*
12
,
n
.
Blockstore
,
n
.
Routing
)
if
cfg
.
Online
{
if
err
:=
n
.
startLateOnlineServices
(
ctx
);
err
!=
nil
{
...
...
core/core.go
浏览文件 @
737508c6
...
...
@@ -21,7 +21,6 @@ import (
"time"
version
"github.com/ipfs/go-ipfs"
rp
"github.com/ipfs/go-ipfs/exchange/reprovide"
filestore
"github.com/ipfs/go-ipfs/filestore"
mount
"github.com/ipfs/go-ipfs/fuse/mount"
namesys
"github.com/ipfs/go-ipfs/namesys"
...
...
@@ -120,13 +119,13 @@ type IpfsNode struct {
RecordValidator
record
.
Validator
// Online
PeerHost
p2phost
.
Host
// the network host (server+client)
Bootstrapper
io
.
Closer
// the periodic bootstrapper
Routing
routing
.
IpfsRouting
// the routing system. recommend ipfs-dht
Exchange
exchange
.
Interface
// the block exchange + strategy (bitswap)
Namesys
namesys
.
NameSystem
// the name system, resolves paths to hashes
Provider
provider
.
Provider
// the value provider system
Reprovider
*
rp
.
Reprovider
// the value reprovider system
PeerHost
p2phost
.
Host
// the network host (server+client)
Bootstrapper
io
.
Closer
// the periodic bootstrapper
Routing
routing
.
IpfsRouting
// the routing system. recommend ipfs-dht
Exchange
exchange
.
Interface
// the block exchange + strategy (bitswap)
Namesys
namesys
.
NameSystem
// the name system, resolves paths to hashes
Provider
provider
.
Provider
// the value provider system
Reprovider
*
provider
.
Reprovider
// the value reprovider system
IpnsRepub
*
ipnsrp
.
Republisher
AutoNAT
*
autonat
.
AutoNATService
...
...
@@ -321,44 +320,13 @@ func constructConnMgr(cfg config.ConnMgr) (ifconnmgr.ConnManager, error) {
}
func
(
n
*
IpfsNode
)
startLateOnlineServices
(
ctx
context
.
Context
)
error
{
cfg
,
err
:=
n
.
Repo
.
Config
()
if
err
!=
nil
{
return
err
}
// Provider
n
.
Provider
.
Run
()
// Reprovider
var
keyProvider
rp
.
KeyChanFunc
switch
cfg
.
Reprovider
.
Strategy
{
case
"all"
:
fallthrough
case
""
:
keyProvider
=
rp
.
NewBlockstoreProvider
(
n
.
Blockstore
)
case
"roots"
:
keyProvider
=
rp
.
NewPinnedProvider
(
n
.
Pinning
,
n
.
DAG
,
true
)
case
"pinned"
:
keyProvider
=
rp
.
NewPinnedProvider
(
n
.
Pinning
,
n
.
DAG
,
false
)
default
:
return
fmt
.
Errorf
(
"unknown reprovider strategy '%s'"
,
cfg
.
Reprovider
.
Strategy
)
}
n
.
Reprovider
=
rp
.
NewReprovider
(
ctx
,
n
.
Routing
,
keyProvider
)
reproviderInterval
:=
kReprovideFrequency
if
cfg
.
Reprovider
.
Interval
!=
""
{
dur
,
err
:=
time
.
ParseDuration
(
cfg
.
Reprovider
.
Interval
)
if
err
!=
nil
{
return
err
}
reproviderInterval
=
dur
}
go
n
.
Reprovider
.
Run
(
reproviderInterval
)
n
.
Reprovider
.
Run
()
return
nil
}
...
...
provider/reprovider.go
浏览文件 @
737508c6
...
...
@@ -16,8 +16,8 @@ type Reprovider struct {
ctx
context
.
Context
queue
*
Queue
tracker
*
Tracker
tick
time
.
Duration
initialTick
time
.
Duration
tick
time
.
Duration
blockstore
blockstore
.
Blockstore
contentRouting
routing
.
ContentRouting
trigger
chan
struct
{}
...
...
@@ -28,13 +28,13 @@ type Reprovider struct {
// Reprovider periodically re-announces the cids that have been provided. These
// reprovides can be run on an interval and/or manually. Reprovider also untracks
// cids that are no longer in the blockstore.
func
NewReprovider
(
ctx
context
.
Context
,
queue
*
Queue
,
tracker
*
Tracker
,
tick
time
.
Duration
,
initialT
ick
time
.
Duration
,
blockstore
blockstore
.
Blockstore
,
contentRouting
routing
.
ContentRouting
)
*
Reprovider
{
func
NewReprovider
(
ctx
context
.
Context
,
queue
*
Queue
,
tracker
*
Tracker
,
initialTick
time
.
Duration
,
t
ick
time
.
Duration
,
blockstore
blockstore
.
Blockstore
,
contentRouting
routing
.
ContentRouting
)
*
Reprovider
{
return
&
Reprovider
{
ctx
:
ctx
,
queue
:
queue
,
tracker
:
tracker
,
tick
:
tick
,
initialTick
:
initialTick
,
tick
:
tick
,
blockstore
:
blockstore
,
contentRouting
:
contentRouting
,
trigger
:
make
(
chan
struct
{}),
...
...
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论