Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
G
go-ipfs
概览
概览
详情
活动
周期分析
版本库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
统计图
问题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程表
图表
维基
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
jihao
go-ipfs
Commits
27b665f5
提交
27b665f5
authored
7月 24, 2014
作者:
Jeromy Johnson
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
stub out dht code to match node repo
上级
c814dd03
隐藏空白字符变更
内嵌
并排
正在显示
1 个修改的文件
包含
104 行增加
和
0 行删除
+104
-0
dht.go
dht/dht.go
+104
-0
没有找到文件。
dht/dht.go
浏览文件 @
27b665f5
package
dht
import
(
"time"
mh
"github.com/jbenet/go-multihash"
peer
"github.com/jbenet/go-ipfs/peer"
"errors"
"net"
)
var
NotFound
=
errors
.
New
(
"Not Found"
)
var
NotAvailable
=
errors
.
New
(
"Not Available"
)
var
TimeoutExceeded
=
errors
.
New
(
"Timeout Exceeded"
)
// The IPFS DHT is an implementation of Kademlia with
// Coral and S/Kademlia modifications. It is used to
// implement the base IPFS Routing module.
// TODO. SEE https://github.com/jbenet/node-ipfs/blob/master/submodules/ipfs-dht/index.js
type
DHT
struct
{
//Network
Network
net
.
Conn
// DHT Configuration Settings
Config
DHTConfig
//Republish
Republish
*
DHTRepublish
}
// TODO: not call this republish
type
DHTRepublish
struct
{
Strict
[]
*
DHTObject
Sloppy
[]
*
DHTObject
}
type
DHTObject
struct
{
Key
string
Value
*
DHTValue
LastPublished
*
time
.
Time
}
func
(
o
*
DHTObject
)
ShouldRepublish
(
interval
time
.
Duration
)
bool
{
return
(
time
.
Now
()
.
Second
()
-
o
.
LastPublished
.
Second
())
>
int
(
interval
.
Seconds
())
}
// A struct representing a value in the DHT
type
DHTValue
struct
{}
type
DHTConfig
struct
{
// Time to wait between republishing intervals
RepublishInterval
time
.
Duration
// Multihash hash function
HashType
int
}
// Looks for a particular node
func
(
dht
*
DHT
)
FindNode
(
id
*
peer
.
ID
/* and a callback? */
)
error
{
panic
(
"Not implemented."
)
}
func
(
dht
*
DHT
)
PingNode
(
id
*
peer
.
ID
,
timeout
time
.
Duration
)
error
{
panic
(
"Not implemented."
)
}
// Retrieves a value for a given key
func
(
dht
*
DHT
)
GetValue
(
key
string
)
*
DHTValue
{
panic
(
"Not implemented."
)
}
// Stores a value for a given key
func
(
dht
*
DHT
)
SetValue
(
key
string
,
value
*
DHTValue
)
error
{
panic
(
"Not implemented."
)
}
// GetSloppyValues finds (at least) a number of values for given key
func
(
dht
*
DHT
)
GetSloppyValues
(
key
string
,
count
int
)
([]
*
DHTValue
,
error
)
{
panic
(
"Not implemented."
)
}
func
(
dht
*
DHT
)
SetSloppyValue
(
key
string
,
value
*
DHTValue
)
error
{
panic
(
"Not implemented."
)
}
func
(
dht
*
DHT
)
periodicRepublish
()
{
tick
:=
time
.
NewTicker
(
time
.
Second
*
5
)
for
{
select
{
case
<-
tick
.
C
:
for
_
,
v
:=
range
dht
.
Republish
.
Strict
{
if
v
.
ShouldRepublish
(
dht
.
Config
.
RepublishInterval
)
{
dht
.
SetValue
(
v
.
Key
,
v
.
Value
)
}
}
for
_
,
v
:=
range
dht
.
Republish
.
Sloppy
{
if
v
.
ShouldRepublish
(
dht
.
Config
.
RepublishInterval
)
{
dht
.
SetSloppyValue
(
v
.
Key
,
v
.
Value
)
}
}
}
}
}
func
(
dht
*
DHT
)
handleMessage
(
message
[]
byte
)
{
}
func
(
dht
*
DHT
)
coerceMultihash
(
hash
mh
.
Multihash
)
{
}
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论