Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
G
go-ipfs
概览
概览
详情
活动
周期分析
版本库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
统计图
问题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程表
图表
维基
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
jihao
go-ipfs
Commits
4ace45d9
提交
4ace45d9
authored
10月 11, 2015
作者:
Jeromy
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
vendor in new iptb code (and as a result, go-multiaddr-net and friends
License: MIT Signed-off-by:
Jeromy
<
jeromyj@gmail.com
>
上级
31d7f030
隐藏空白字符变更
内嵌
并排
正在显示
1 个修改的文件
包含
89 行增加
和
11 行删除
+89
-11
main.go
test/dependencies/iptb/main.go
+89
-11
没有找到文件。
test/dependencies/iptb/main.go
浏览文件 @
4ace45d9
...
...
@@ -73,13 +73,19 @@ type initCfg struct {
Bootstrap
string
PortStart
int
Mdns
bool
Utp
bool
}
func
(
c
*
initCfg
)
swarmAddrForPeer
(
i
int
)
string
{
str
:=
"/ip4/0.0.0.0/tcp/%d"
if
c
.
Utp
{
str
=
"/ip4/0.0.0.0/udp/%d/utp"
}
if
c
.
PortStart
==
0
{
return
"/ip4/0.0.0.0/tcp/0"
return
fmt
.
Sprintf
(
str
,
0
)
}
return
fmt
.
Sprintf
(
"/ip4/0.0.0.0/tcp/%d"
,
c
.
PortStart
+
i
)
return
fmt
.
Sprintf
(
str
,
c
.
PortStart
+
i
)
}
func
(
c
*
initCfg
)
apiAddrForPeer
(
i
int
)
string
{
...
...
@@ -250,6 +256,20 @@ func IpfsKillAll() error {
return
nil
}
func
envForDaemon
(
n
int
)
[]
string
{
envs
:=
os
.
Environ
()
npath
:=
"IPFS_PATH="
+
IpfsDirN
(
n
)
for
i
,
e
:=
range
envs
{
p
:=
strings
.
Split
(
e
,
"="
)
if
p
[
0
]
==
"IPFS_PATH"
{
envs
[
i
]
=
npath
return
envs
}
}
return
append
(
envs
,
npath
)
}
func
IpfsStart
(
waitall
bool
)
error
{
var
addrs
[]
string
n
:=
GetNumNodes
()
...
...
@@ -257,7 +277,7 @@ func IpfsStart(waitall bool) error {
dir
:=
IpfsDirN
(
i
)
cmd
:=
exec
.
Command
(
"ipfs"
,
"daemon"
)
cmd
.
Dir
=
dir
cmd
.
Env
=
append
(
os
.
Environ
(),
"IPFS_PATH="
+
dir
)
cmd
.
Env
=
envForDaemon
(
i
)
cmd
.
SysProcAttr
=
&
syscall
.
SysProcAttr
{
Setsid
:
true
}
...
...
@@ -441,6 +461,11 @@ func IpfsShell(n int) error {
}
func
ConnectNodes
(
from
,
to
int
)
error
{
if
from
==
to
{
// skip connecting to self..
return
nil
}
fmt
.
Printf
(
"connecting %d -> %d
\n
"
,
from
,
to
)
cmd
:=
exec
.
Command
(
"ipfs"
,
"id"
,
"-f"
,
"<addrs>"
)
cmd
.
Env
=
[]
string
{
"IPFS_PATH="
+
IpfsDirN
(
to
)}
out
,
err
:=
cmd
.
Output
()
...
...
@@ -449,7 +474,6 @@ func ConnectNodes(from, to int) error {
return
err
}
addr
:=
strings
.
Split
(
string
(
out
),
"
\n
"
)[
0
]
fmt
.
Println
(
"ADDR: "
,
addr
)
connectcmd
:=
exec
.
Command
(
"ipfs"
,
"swarm"
,
"connect"
,
addr
)
connectcmd
.
Env
=
[]
string
{
"IPFS_PATH="
+
IpfsDirN
(
from
)}
...
...
@@ -461,6 +485,55 @@ func ConnectNodes(from, to int) error {
return
nil
}
func
parseRange
(
s
string
)
([]
int
,
error
)
{
if
strings
.
HasPrefix
(
s
,
"["
)
&&
strings
.
HasSuffix
(
s
,
"]"
)
{
ranges
:=
strings
.
Split
(
s
[
1
:
len
(
s
)
-
1
],
","
)
var
out
[]
int
for
_
,
r
:=
range
ranges
{
rng
,
err
:=
expandDashRange
(
r
)
if
err
!=
nil
{
return
nil
,
err
}
out
=
append
(
out
,
rng
...
)
}
return
out
,
nil
}
else
{
i
,
err
:=
strconv
.
Atoi
(
s
)
if
err
!=
nil
{
return
nil
,
err
}
return
[]
int
{
i
},
nil
}
}
func
expandDashRange
(
s
string
)
([]
int
,
error
)
{
parts
:=
strings
.
Split
(
s
,
"-"
)
if
len
(
parts
)
==
0
{
i
,
err
:=
strconv
.
Atoi
(
s
)
if
err
!=
nil
{
return
nil
,
err
}
return
[]
int
{
i
},
nil
}
low
,
err
:=
strconv
.
Atoi
(
parts
[
0
])
if
err
!=
nil
{
return
nil
,
err
}
hi
,
err
:=
strconv
.
Atoi
(
parts
[
1
])
if
err
!=
nil
{
return
nil
,
err
}
var
out
[]
int
for
i
:=
low
;
i
<=
hi
;
i
++
{
out
=
append
(
out
,
i
)
}
return
out
,
nil
}
func
GetAttr
(
attr
string
,
node
int
)
(
string
,
error
)
{
switch
attr
{
case
"id"
:
...
...
@@ -518,9 +591,10 @@ func main() {
cfg
:=
new
(
initCfg
)
kingpin
.
Flag
(
"n"
,
"number of ipfs nodes to initialize"
)
.
Short
(
'n'
)
.
IntVar
(
&
cfg
.
Count
)
kingpin
.
Flag
(
"port"
,
"port to start allocations from"
)
.
Default
(
"4002"
)
.
Short
(
'p'
)
.
IntVar
(
&
cfg
.
PortStart
)
kingpin
.
Flag
(
"f
"
,
"force initialization (overwrite existing configs)"
)
.
BoolVar
(
&
cfg
.
Force
)
kingpin
.
Flag
(
"f
orce"
,
"force initialization (overwrite existing configs)"
)
.
Short
(
'f'
)
.
BoolVar
(
&
cfg
.
Force
)
kingpin
.
Flag
(
"mdns"
,
"turn on mdns for nodes"
)
.
BoolVar
(
&
cfg
.
Mdns
)
kingpin
.
Flag
(
"bootstrap"
,
"select bootstrapping style for cluster"
)
.
Default
(
"star"
)
.
StringVar
(
&
cfg
.
Bootstrap
)
kingpin
.
Flag
(
"utp"
,
"use utp for addresses"
)
.
BoolVar
(
&
cfg
.
Utp
)
wait
:=
kingpin
.
Flag
(
"wait"
,
"wait for nodes to come fully online before exiting"
)
.
Bool
()
...
...
@@ -576,22 +650,26 @@ func main() {
os
.
Exit
(
1
)
}
from
,
err
:=
strconv
.
Atoi
(
args
[
1
])
from
,
err
:=
parseRange
(
args
[
1
])
if
err
!=
nil
{
fmt
.
Printf
(
"failed to parse: %s
\n
"
,
err
)
return
}
to
,
err
:=
strconv
.
Atoi
(
args
[
2
])
to
,
err
:=
parseRange
(
args
[
2
])
if
err
!=
nil
{
fmt
.
Printf
(
"failed to parse: %s
\n
"
,
err
)
return
}
err
=
ConnectNodes
(
from
,
to
)
if
err
!=
nil
{
fmt
.
Printf
(
"failed to connect: %s
\n
"
,
err
)
return
for
_
,
f
:=
range
from
{
for
_
,
t
:=
range
to
{
err
=
ConnectNodes
(
f
,
t
)
if
err
!=
nil
{
fmt
.
Printf
(
"failed to connect: %s
\n
"
,
err
)
return
}
}
}
case
"get"
:
...
...
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论