Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
G
go-ipfs
概览
概览
详情
活动
周期分析
版本库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
统计图
问题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程表
图表
维基
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
jihao
go-ipfs
Commits
dfc7d1dd
提交
dfc7d1dd
authored
9月 13, 2016
作者:
Jeromy
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
add discovery option, and update to floodsub 0.4.2
License: MIT Signed-off-by:
Jeromy
<
why@ipfs.io
>
上级
bcb20ee0
隐藏空白字符变更
内嵌
并排
正在显示
3 个修改的文件
包含
51 行增加
和
4 行删除
+51
-4
pubsub.go
core/commands/pubsub.go
+48
-1
core.go
core/core.go
+1
-1
package.json
package.json
+2
-2
没有找到文件。
core/commands/pubsub.go
浏览文件 @
dfc7d1dd
...
...
@@ -2,13 +2,21 @@ package commands
import
(
"bytes"
"context"
"encoding/binary"
"io"
"sync"
"time"
blocks
"github.com/ipfs/go-ipfs/blocks"
cmds
"github.com/ipfs/go-ipfs/commands"
core
"github.com/ipfs/go-ipfs/core"
floodsub
"gx/ipfs/Qm
SWp1Yx7Z5pbpeCbUy6tfFj2DrHUe7tGQqyYC2vspbXH1
/floodsub"
floodsub
"gx/ipfs/Qm
QtsU1T46uxjFMd5r5PfyaY1HdV5jcxZbvvHbAVRL52hc
/floodsub"
u
"gx/ipfs/QmZNVWh8LLjAavuQ2JXuFmuYH3C11xo988vSgp7UQrTRj1/go-ipfs-util"
key
"gx/ipfs/Qmce4Y4zg3sYr7xKM5UueS67vhNni6EeWgCRnb7MbLJMew/go-key"
pstore
"gx/ipfs/QmdMfSLMDBDYhtc4oF3NYGCZr5dy4wQb6Ji26N4D4mdxa2/go-libp2p-peerstore"
cid
"gx/ipfs/QmfSc2xehWmWLnwwYR91Y8QF4xdASypTFVknutoKQS3GHp/go-cid"
)
var
PubsubCmd
=
&
cmds
.
Command
{
...
...
@@ -41,6 +49,9 @@ to be used in a production environment.
Arguments
:
[]
cmds
.
Argument
{
cmds
.
StringArg
(
"topic"
,
true
,
false
,
"String name of topic to subscribe to."
),
},
Options
:
[]
cmds
.
Option
{
cmds
.
BoolOption
(
"discover"
,
"try to discover other peers subscribed to the same topic"
),
},
Run
:
func
(
req
cmds
.
Request
,
res
cmds
.
Response
)
{
n
,
err
:=
req
.
InvocContext
()
.
GetNode
()
if
err
!=
nil
{
...
...
@@ -79,6 +90,18 @@ to be used in a production environment.
}
}
}()
discover
,
_
,
_
:=
req
.
Option
(
"discover"
)
.
Bool
()
if
discover
{
blk
:=
blocks
.
NewBlock
([]
byte
(
"floodsub:"
+
topic
))
cid
,
err
:=
n
.
Blocks
.
AddObject
(
blk
)
if
err
!=
nil
{
log
.
Error
(
"pubsub discovery: "
,
err
)
return
}
connectToPubSubPeers
(
req
.
Context
(),
n
,
cid
)
}
},
Marshalers
:
cmds
.
MarshalerMap
{
cmds
.
Text
:
getPsMsgMarshaler
(
func
(
m
*
floodsub
.
Message
)
(
io
.
Reader
,
error
)
{
...
...
@@ -97,6 +120,30 @@ to be used in a production environment.
Type
:
floodsub
.
Message
{},
}
func
connectToPubSubPeers
(
ctx
context
.
Context
,
n
*
core
.
IpfsNode
,
cid
*
cid
.
Cid
)
{
ctx
,
cancel
:=
context
.
WithCancel
(
ctx
)
defer
cancel
()
provs
:=
n
.
Routing
.
FindProvidersAsync
(
ctx
,
key
.
Key
(
cid
.
Hash
()),
10
)
wg
:=
&
sync
.
WaitGroup
{}
for
p
:=
range
provs
{
wg
.
Add
(
1
)
go
func
(
pi
pstore
.
PeerInfo
)
{
defer
wg
.
Done
()
ctx
,
cancel
:=
context
.
WithTimeout
(
ctx
,
time
.
Second
*
10
)
defer
cancel
()
err
:=
n
.
PeerHost
.
Connect
(
ctx
,
pi
)
if
err
!=
nil
{
log
.
Info
(
"pubsub discover: "
,
err
)
return
}
log
.
Info
(
"connected to pubsub peer:"
,
pi
.
ID
)
}(
p
)
}
wg
.
Wait
()
}
func
getPsMsgMarshaler
(
f
func
(
m
*
floodsub
.
Message
)
(
io
.
Reader
,
error
))
func
(
cmds
.
Response
)
(
io
.
Reader
,
error
)
{
return
func
(
res
cmds
.
Response
)
(
io
.
Reader
,
error
)
{
outChan
,
ok
:=
res
.
Output
()
.
(
<-
chan
interface
{})
...
...
core/core.go
浏览文件 @
dfc7d1dd
...
...
@@ -17,9 +17,9 @@ import (
"time"
diag
"github.com/ipfs/go-ipfs/diagnostics"
floodsub
"gx/ipfs/QmQtsU1T46uxjFMd5r5PfyaY1HdV5jcxZbvvHbAVRL52hc/floodsub"
goprocess
"gx/ipfs/QmSF8fPo3jgVBAy8fpdjjYqgG87dkJgUprRBHRd2tmfgpP/goprocess"
mamask
"gx/ipfs/QmSMZwvs3n4GBikZ7hKzT17c3bk65FmyZo2JqtJ16swqCv/multiaddr-filter"
floodsub
"gx/ipfs/QmSWp1Yx7Z5pbpeCbUy6tfFj2DrHUe7tGQqyYC2vspbXH1/floodsub"
logging
"gx/ipfs/QmSpJByNKFX1sCsHBEp3R73FL4NF6FnQTEGyNAXHm2GS52/go-log"
b58
"gx/ipfs/QmT8rehPR3F6bmwL6zjUN8XpiDBFFpMP2myPdC6ApsWfJf/go-base58"
discovery
"gx/ipfs/QmUuwQUJmtvC6ReYcu7xaYKEUM3pD46H18dFn3LBhVt2Di/go-libp2p/p2p/discovery"
...
...
package.json
浏览文件 @
dfc7d1dd
...
...
@@ -242,9 +242,9 @@
},
{
"author"
:
"whyrusleeping"
,
"hash"
:
"Qm
SWp1Yx7Z5pbpeCbUy6tfFj2DrHUe7tGQqyYC2vspbXH1
"
,
"hash"
:
"Qm
QtsU1T46uxjFMd5r5PfyaY1HdV5jcxZbvvHbAVRL52hc
"
,
"name"
:
"floodsub"
,
"version"
:
"0.4.
1
"
"version"
:
"0.4.
2
"
}
],
"gxVersion"
:
"0.4.0"
,
...
...
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论