Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
G
go-ipfs
概览
概览
详情
活动
周期分析
版本库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
统计图
问题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程表
图表
维基
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
jihao
go-ipfs
Commits
a92a1745
提交
a92a1745
authored
12月 14, 2018
作者:
Łukasz Magiera
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
files2.0: return errors from ufsIterator properly
License: MIT Signed-off-by:
Łukasz Magiera
<
magik6k@gmail.com
>
上级
351ed26b
隐藏空白字符变更
内嵌
并排
正在显示
2 个修改的文件
包含
78 行增加
和
4 行删除
+78
-4
unixfile.go
core/coreapi/unixfile.go
+31
-4
unixfs_test.go
core/coreapi/unixfs_test.go
+47
-0
没有找到文件。
core/coreapi/unixfile.go
浏览文件 @
a92a1745
...
...
@@ -31,7 +31,8 @@ type ufsIterator struct {
curName
string
curFile
files
.
Node
err
error
err
error
errCh
chan
error
}
func
(
it
*
ufsIterator
)
Name
()
string
{
...
...
@@ -43,11 +44,31 @@ func (it *ufsIterator) Node() files.Node {
}
func
(
it
*
ufsIterator
)
Next
()
bool
{
l
,
ok
:=
<-
it
.
files
if
!
ok
{
if
it
.
err
!=
nil
{
return
false
}
var
l
*
ipld
.
Link
var
ok
bool
for
!
ok
{
if
it
.
files
==
nil
&&
it
.
errCh
==
nil
{
return
false
}
select
{
case
l
,
ok
=
<-
it
.
files
:
if
!
ok
{
it
.
files
=
nil
}
case
err
:=
<-
it
.
errCh
:
it
.
errCh
=
nil
it
.
err
=
err
if
err
!=
nil
{
return
false
}
}
}
it
.
curFile
=
nil
nd
,
err
:=
l
.
GetNode
(
it
.
ctx
,
it
.
dserv
)
...
...
@@ -71,8 +92,12 @@ func (d *ufsDirectory) Close() error {
func
(
d
*
ufsDirectory
)
Entries
()
files
.
DirIterator
{
fileCh
:=
make
(
chan
*
ipld
.
Link
,
prefetchFiles
)
errCh
:=
make
(
chan
error
,
1
)
go
func
()
{
d
.
dir
.
ForEachLink
(
d
.
ctx
,
func
(
link
*
ipld
.
Link
)
error
{
errCh
<-
d
.
dir
.
ForEachLink
(
d
.
ctx
,
func
(
link
*
ipld
.
Link
)
error
{
if
d
.
ctx
.
Err
()
!=
nil
{
return
d
.
ctx
.
Err
()
}
select
{
case
fileCh
<-
link
:
case
<-
d
.
ctx
.
Done
()
:
...
...
@@ -81,12 +106,14 @@ func (d *ufsDirectory) Entries() files.DirIterator {
return
nil
})
close
(
errCh
)
close
(
fileCh
)
}()
return
&
ufsIterator
{
ctx
:
d
.
ctx
,
files
:
fileCh
,
errCh
:
errCh
,
dserv
:
d
.
dserv
,
}
}
...
...
core/coreapi/unixfs_test.go
浏览文件 @
a92a1745
...
...
@@ -776,6 +776,53 @@ func TestLs(t *testing.T) {
}
}
func
TestEntriesExpired
(
t
*
testing
.
T
)
{
ctx
:=
context
.
Background
()
node
,
api
,
err
:=
makeAPI
(
ctx
)
if
err
!=
nil
{
t
.
Error
(
err
)
}
r
:=
strings
.
NewReader
(
"content-of-file"
)
k
,
_
,
err
:=
coreunix
.
AddWrapped
(
node
,
r
,
"name-of-file"
)
if
err
!=
nil
{
t
.
Error
(
err
)
}
parts
:=
strings
.
Split
(
k
,
"/"
)
if
len
(
parts
)
!=
2
{
t
.
Errorf
(
"unexpected path: %s"
,
k
)
}
p
,
err
:=
coreiface
.
ParsePath
(
"/ipfs/"
+
parts
[
0
])
if
err
!=
nil
{
t
.
Error
(
err
)
}
ctx
,
cancel
:=
context
.
WithCancel
(
ctx
)
nd
,
err
:=
api
.
Unixfs
()
.
Get
(
ctx
,
p
)
if
err
!=
nil
{
t
.
Error
(
err
)
}
cancel
()
it
:=
files
.
ToDir
(
nd
)
.
Entries
()
if
it
==
nil
{
t
.
Fatal
(
"it was nil"
)
}
if
it
.
Next
()
{
t
.
Fatal
(
"Next succeeded"
)
}
if
it
.
Err
()
!=
context
.
Canceled
{
t
.
Fatalf
(
"unexpected error %s"
,
it
.
Err
())
}
if
it
.
Next
()
{
t
.
Fatal
(
"Next succeeded"
)
}
}
func
TestLsEmptyDir
(
t
*
testing
.
T
)
{
ctx
:=
context
.
Background
()
node
,
api
,
err
:=
makeAPI
(
ctx
)
...
...
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论