Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
G
go-ipfs
概览
概览
详情
活动
周期分析
版本库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
统计图
问题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程表
图表
维基
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
jihao
go-ipfs
Commits
cb0d1f44
提交
cb0d1f44
authored
6月 01, 2018
作者:
Kevin Atkinson
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Write zeros in small chunks rather than all at once.
License: MIT Signed-off-by:
Kevin Atkinson
<
k@kevina.org
>
上级
d4f16e27
隐藏空白字符变更
内嵌
并排
正在显示
2 个修改的文件
包含
43 行增加
和
3 行删除
+43
-3
sizeadj.go
unixfs/io/sizeadj.go
+20
-3
sizeadj_test.go
unixfs/io/sizeadj_test.go
+23
-0
没有找到文件。
unixfs/io/sizeadj.go
浏览文件 @
cb0d1f44
...
...
@@ -79,15 +79,32 @@ func (r *sizeAdjReadSeekCloser) WriteTo(w io.Writer) (int64, error) {
return
n
,
err
}
if
r
.
offset
+
n
<
r
.
size
{
zeros
:=
make
([]
byte
,
r
.
size
-
(
r
.
offset
+
n
))
n0
,
err0
:=
w
.
Write
(
zeros
)
n
+=
int64
(
n0
)
n0
,
err0
:=
writeZeros
(
w
,
r
.
size
-
(
r
.
offset
+
n
))
n
+=
n0
err
=
err0
}
r
.
offset
+=
n
return
n
,
err
}
func
writeZeros
(
w
io
.
Writer
,
numZeros
int64
)
(
int64
,
error
)
{
n
:=
int64
(
0
)
for
numZeros
>
0
{
l
:=
int64
(
4
*
1024
)
if
l
>
numZeros
{
l
=
numZeros
}
zeros
:=
make
([]
byte
,
l
)
n0
,
err
:=
w
.
Write
(
zeros
)
n
+=
int64
(
n0
)
if
err
!=
nil
{
return
n
,
err
}
numZeros
-=
l
}
return
n
,
nil
}
// truncWriter accepts all bytes written to it, but discards the tail
// after size bytes are accepted
type
truncWriter
struct
{
...
...
unixfs/io/sizeadj_test.go
浏览文件 @
cb0d1f44
...
...
@@ -105,3 +105,26 @@ func TestTruncWriter(t *testing.T) {
t
.
Fatalf
(
"truncWriter wrote incorrect number of bytes (expected 45): %d"
,
len
(
res
))
}
}
func
TestWriteZeros
(
t
*
testing
.
T
)
{
buf
:=
new
(
bytes
.
Buffer
)
n
,
err
:=
writeZeros
(
buf
,
1000
)
if
err
!=
nil
{
t
.
Fatalf
(
"writeZeros failed: %v"
,
err
)
}
res
:=
buf
.
Bytes
()
if
n
!=
1000
||
len
(
res
)
!=
1000
{
t
.
Fatalf
(
"writeZeros wrote incorrect number of bytes (expected 1000): %d %d"
,
n
,
len
(
res
))
}
buf
.
Reset
()
n
,
err
=
writeZeros
(
buf
,
10000
)
if
err
!=
nil
{
t
.
Fatalf
(
"writeZeros failed: %v"
,
err
)
}
res
=
buf
.
Bytes
()
if
n
!=
10000
||
len
(
res
)
!=
10000
{
t
.
Fatalf
(
"writeZeros wrote incorrect number of bytes (expected 10000): %d %d"
,
n
,
len
(
res
))
}
}
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论