Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
G
go-ipfs
概览
概览
详情
活动
周期分析
版本库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
统计图
问题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程表
图表
维基
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
jihao
go-ipfs
Commits
99db07c3
提交
99db07c3
authored
9月 10, 2014
作者:
Brian Tiger Chow
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
hide ledger wantlist manipulation
上级
182604c6
隐藏空白字符变更
内嵌
并排
正在显示
2 个修改的文件
包含
17 行增加
和
8 行删除
+17
-8
bitswap.go
bitswap/bitswap.go
+7
-8
ledger.go
bitswap/ledger.go
+10
-0
没有找到文件。
bitswap/bitswap.go
浏览文件 @
99db07c3
...
...
@@ -137,7 +137,7 @@ func (bs *BitSwap) getBlock(k u.Key, p *peer.Peer, timeout time.Duration) ([]byt
func
(
bs
*
BitSwap
)
HaveBlock
(
blk
*
blocks
.
Block
)
error
{
go
func
()
{
for
_
,
ledger
:=
range
bs
.
partners
{
if
_
,
ok
:=
ledger
.
WantList
[
blk
.
Key
()];
ok
{
if
ledger
.
WantListContains
(
blk
.
Key
())
{
//send block to node
if
ledger
.
ShouldSend
()
{
bs
.
SendBlock
(
ledger
.
Partner
,
blk
)
...
...
@@ -192,14 +192,13 @@ func (bs *BitSwap) handleMessages() {
// and then if we do, check the ledger for whether or not we should send it.
func
(
bs
*
BitSwap
)
peerWantsBlock
(
p
*
peer
.
Peer
,
want
string
)
{
u
.
DOut
(
"peer [%s] wants block [%s]
\n
"
,
p
.
ID
.
Pretty
(),
u
.
Key
(
want
)
.
Pretty
())
ledg
:=
bs
.
getLedger
(
p
)
ledg
er
:=
bs
.
getLedger
(
p
)
dsk
:=
ds
.
NewKey
(
want
)
blk_i
,
err
:=
bs
.
datastore
.
Get
(
dsk
)
if
err
!=
nil
{
if
err
==
ds
.
ErrNotFound
{
// TODO: this needs to be different. We need timeouts.
ledg
.
WantList
[
u
.
Key
(
want
)]
=
struct
{}{}
ledger
.
Wants
(
u
.
Key
(
want
))
}
u
.
PErr
(
"datastore get error: %v
\n
"
,
err
)
return
...
...
@@ -211,7 +210,7 @@ func (bs *BitSwap) peerWantsBlock(p *peer.Peer, want string) {
return
}
if
ledg
.
ShouldSend
()
{
if
ledg
er
.
ShouldSend
()
{
u
.
DOut
(
"Sending block to peer.
\n
"
)
bblk
,
err
:=
blocks
.
NewBlock
(
blk
)
if
err
!=
nil
{
...
...
@@ -219,7 +218,7 @@ func (bs *BitSwap) peerWantsBlock(p *peer.Peer, want string) {
return
}
bs
.
SendBlock
(
p
,
bblk
)
ledg
.
SentBytes
(
len
(
blk
))
ledg
er
.
SentBytes
(
len
(
blk
))
}
else
{
u
.
DOut
(
"Decided not to send block."
)
}
...
...
@@ -276,7 +275,7 @@ func (bs *BitSwap) Halt() {
func
(
bs
*
BitSwap
)
SetStrategy
(
sf
StrategyFunc
)
{
bs
.
strategy
=
sf
for
_
,
ledg
:=
range
bs
.
partners
{
ledg
.
Strategy
=
sf
for
_
,
ledg
er
:=
range
bs
.
partners
{
ledg
er
.
Strategy
=
sf
}
}
bitswap/ledger.go
浏览文件 @
99db07c3
...
...
@@ -49,3 +49,13 @@ func (l *Ledger) ReceivedBytes(n int) {
l
.
LastExchange
=
time
.
Now
()
l
.
Accounting
.
BytesRecv
+=
uint64
(
n
)
}
// TODO: this needs to be different. We need timeouts.
func
(
l
*
Ledger
)
Wants
(
k
u
.
Key
)
{
l
.
WantList
[
k
]
=
struct
{}{}
}
func
(
l
*
Ledger
)
WantListContains
(
k
u
.
Key
)
bool
{
_
,
ok
:=
l
.
WantList
[
k
]
return
ok
}
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论