Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
G
go-ipfs
概览
概览
详情
活动
周期分析
版本库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
统计图
问题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程表
图表
维基
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
jihao
go-ipfs
Commits
b71a0ace
提交
b71a0ace
authored
5月 19, 2015
作者:
Jeromy
提交者:
Juan Batiz-Benet
5月 21, 2015
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
clarify synhronization constructs
上级
c273a3bd
隐藏空白字符变更
内嵌
并排
正在显示
1 个修改的文件
包含
17 行增加
和
21 行删除
+17
-21
wantmanager.go
exchange/bitswap/wantmanager.go
+17
-21
没有找到文件。
exchange/bitswap/wantmanager.go
浏览文件 @
b71a0ace
...
...
@@ -14,23 +14,17 @@ import (
)
type
WantManager
struct
{
receiver
bsnet
.
Receiver
incoming
chan
[]
*
bsmsg
.
Entry
// notification channel for new peers connecting
connect
chan
peer
.
ID
// notification channel for peers disconnecting
disconnect
chan
peer
.
ID
// sync channels for Run loop
incoming
chan
[]
*
bsmsg
.
Entry
connect
chan
peer
.
ID
// notification channel for new peers connecting
disconnect
chan
peer
.
ID
// notification channel for peers disconnecting
// synchronized by Run loop, only touch inside there
peers
map
[
peer
.
ID
]
*
msgQueue
wl
*
wantlist
.
Wantlist
wl
*
wantlist
.
Wantlist
network
bsnet
.
BitSwapNetwork
ctx
context
.
Context
ctx
context
.
Context
}
func
NewWantManager
(
ctx
context
.
Context
,
network
bsnet
.
BitSwapNetwork
)
*
WantManager
{
...
...
@@ -58,8 +52,9 @@ type cancellation struct {
type
msgQueue
struct
{
p
peer
.
ID
outlk
sync
.
Mutex
out
bsmsg
.
BitSwapMessage
outlk
sync
.
Mutex
out
bsmsg
.
BitSwapMessage
network
bsnet
.
BitSwapNetwork
work
chan
struct
{}
done
chan
struct
{}
...
...
@@ -112,7 +107,7 @@ func (pm *WantManager) startPeerHandler(p peer.ID) *msgQueue {
return
nil
}
mq
:=
newMsgQueue
(
p
)
mq
:=
pm
.
newMsgQueue
(
p
)
// new peer, we will want to give them our full wantlist
fullwantlist
:=
bsmsg
.
New
(
true
)
...
...
@@ -123,7 +118,7 @@ func (pm *WantManager) startPeerHandler(p peer.ID) *msgQueue {
mq
.
work
<-
struct
{}{}
pm
.
peers
[
p
]
=
mq
go
pm
.
runQueue
(
mq
)
go
mq
.
runQueue
(
pm
.
ctx
)
return
mq
}
...
...
@@ -138,12 +133,12 @@ func (pm *WantManager) stopPeerHandler(p peer.ID) {
delete
(
pm
.
peers
,
p
)
}
func
(
pm
*
WantManager
)
runQueue
(
mq
*
msgQueue
)
{
func
(
mq
*
msgQueue
)
runQueue
(
ctx
context
.
Context
)
{
for
{
select
{
case
<-
mq
.
work
:
// there is work to be done
err
:=
pm
.
network
.
ConnectTo
(
pm
.
ctx
,
mq
.
p
)
err
:=
mq
.
network
.
ConnectTo
(
ctx
,
mq
.
p
)
if
err
!=
nil
{
log
.
Errorf
(
"cant connect to peer %s: %s"
,
mq
.
p
,
err
)
// TODO: cant connect, what now?
...
...
@@ -161,7 +156,7 @@ func (pm *WantManager) runQueue(mq *msgQueue) {
mq
.
outlk
.
Unlock
()
// send wantlist updates
err
=
pm
.
network
.
SendMessage
(
pm
.
ctx
,
mq
.
p
,
wlm
)
err
=
mq
.
network
.
SendMessage
(
ctx
,
mq
.
p
,
wlm
)
if
err
!=
nil
{
log
.
Error
(
"bitswap send error: "
,
err
)
// TODO: what do we do if this fails?
...
...
@@ -224,10 +219,11 @@ func (pm *WantManager) Run() {
}
}
func
newMsgQueue
(
p
peer
.
ID
)
*
msgQueue
{
func
(
wm
*
WantManager
)
newMsgQueue
(
p
peer
.
ID
)
*
msgQueue
{
mq
:=
new
(
msgQueue
)
mq
.
done
=
make
(
chan
struct
{})
mq
.
work
=
make
(
chan
struct
{},
1
)
mq
.
network
=
wm
.
network
mq
.
p
=
p
return
mq
...
...
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论