Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
G
go-ipfs
概览
概览
详情
活动
周期分析
版本库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
统计图
问题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程表
图表
维基
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
jihao
go-ipfs
Commits
4f76e473
提交
4f76e473
authored
3月 12, 2015
作者:
Jeromy
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
a bit of cleanup
上级
9ab59e44
隐藏空白字符变更
内嵌
并排
正在显示
3 个修改的文件
包含
15 行增加
和
27 行删除
+15
-27
dir.go
ipnsfs/dir.go
+12
-5
file.go
ipnsfs/file.go
+1
-22
system_test.go
ipnsfs/system_test.go
+2
-0
没有找到文件。
ipnsfs/dir.go
浏览文件 @
4f76e473
...
...
@@ -11,6 +11,9 @@ import (
ufspb
"github.com/jbenet/go-ipfs/unixfs/pb"
)
var
ErrNotYetImplemented
=
errors
.
New
(
"not yet implemented"
)
var
ErrInvalidChild
=
errors
.
New
(
"invalid child node"
)
type
Directory
struct
{
fs
*
Filesystem
parent
childCloser
...
...
@@ -128,9 +131,9 @@ func (d *Directory) childFile(name string) (*file, error) {
d
.
files
[
name
]
=
nfi
return
nfi
,
nil
case
ufspb
.
Data_Metadata
:
panic
(
"NOT YET IMPLEMENTED"
)
return
nil
,
ErrNotYetImplemented
default
:
panic
(
"NO!"
)
return
nil
,
ErrInvalidChild
}
}
}
...
...
@@ -162,9 +165,9 @@ func (d *Directory) childDir(name string) (*Directory, error) {
case
ufspb
.
Data_File
:
return
nil
,
fmt
.
Errorf
(
"%s is not a directory"
,
name
)
case
ufspb
.
Data_Metadata
:
panic
(
"NOT YET IMPLEMENTED"
)
return
nil
,
ErrNotYetImplemented
default
:
panic
(
"NO!"
)
return
nil
,
ErrInvalidChild
}
}
...
...
@@ -247,7 +250,9 @@ func (d *Directory) Unlink(name string) error {
return
d
.
parent
.
closeChild
(
d
.
name
,
d
.
node
)
}
// RenameEntry renames the child by 'oldname' of this directory to 'newname'
func
(
d
*
Directory
)
RenameEntry
(
oldname
,
newname
string
)
error
{
// Is the child a directory?
dir
,
err
:=
d
.
childDir
(
oldname
)
if
err
==
nil
{
dir
.
name
=
newname
...
...
@@ -266,6 +271,7 @@ func (d *Directory) RenameEntry(oldname, newname string) error {
return
d
.
parent
.
closeChild
(
d
.
name
,
d
.
node
)
}
// Is the child a file?
fi
,
err
:=
d
.
childFile
(
oldname
)
if
err
==
nil
{
fi
.
name
=
newname
...
...
@@ -292,6 +298,7 @@ func (d *Directory) RenameEntry(oldname, newname string) error {
return
ErrNoSuch
}
// AddChild adds the node 'nd' under this directory giving it the name 'name'
func
(
d
*
Directory
)
AddChild
(
name
string
,
nd
*
dag
.
Node
)
error
{
pbn
,
err
:=
ft
.
FromBytes
(
nd
.
Data
)
if
err
!=
nil
{
...
...
@@ -318,7 +325,7 @@ func (d *Directory) AddChild(name string, nd *dag.Node) error {
}
d
.
files
[
name
]
=
nfi
default
:
panic
(
"invalid unixfs node"
)
return
ErrInvalidChild
}
return
d
.
parent
.
closeChild
(
d
.
name
,
d
.
node
)
}
...
...
ipnsfs/file.go
浏览文件 @
4f76e473
...
...
@@ -4,7 +4,6 @@ import (
"errors"
"io"
"os"
"sync"
chunk
"github.com/jbenet/go-ipfs/importer/chunk"
dag
"github.com/jbenet/go-ipfs/merkledag"
...
...
@@ -30,13 +29,11 @@ type file struct {
name
string
hasChanges
bool
// TODO: determine whether or not locking here is actually required...
lk
sync
.
Mutex
mod
*
mod
.
DagModifier
}
func
NewFile
(
name
string
,
node
*
dag
.
Node
,
parent
childCloser
,
fs
*
Filesystem
)
(
*
file
,
error
)
{
dmod
,
err
:=
mod
.
NewDagModifier
(
context
.
TODO
(),
node
,
fs
.
dserv
,
fs
.
pins
.
GetManual
(),
chunk
.
DefaultSplitter
)
dmod
,
err
:=
mod
.
NewDagModifier
(
context
.
Background
(),
node
,
fs
.
dserv
,
fs
.
pins
.
GetManual
(),
chunk
.
DefaultSplitter
)
if
err
!=
nil
{
return
nil
,
err
}
...
...
@@ -50,21 +47,15 @@ func NewFile(name string, node *dag.Node, parent childCloser, fs *Filesystem) (*
}
func
(
fi
*
file
)
Write
(
b
[]
byte
)
(
int
,
error
)
{
fi
.
lk
.
Lock
()
defer
fi
.
lk
.
Unlock
()
fi
.
hasChanges
=
true
return
fi
.
mod
.
Write
(
b
)
}
func
(
fi
*
file
)
Read
(
b
[]
byte
)
(
int
,
error
)
{
fi
.
lk
.
Lock
()
defer
fi
.
lk
.
Unlock
()
return
fi
.
mod
.
Read
(
b
)
}
func
(
fi
*
file
)
Close
()
error
{
fi
.
lk
.
Lock
()
defer
fi
.
lk
.
Unlock
()
if
fi
.
hasChanges
{
err
:=
fi
.
mod
.
Flush
()
if
err
!=
nil
{
...
...
@@ -88,8 +79,6 @@ func (fi *file) Close() error {
}
func
(
fi
*
file
)
Flush
()
error
{
fi
.
lk
.
Lock
()
defer
fi
.
lk
.
Unlock
()
return
fi
.
mod
.
Flush
()
}
...
...
@@ -101,33 +90,23 @@ func (fi *file) withMode(mode int) File {
}
func
(
fi
*
file
)
Seek
(
offset
int64
,
whence
int
)
(
int64
,
error
)
{
fi
.
lk
.
Lock
()
defer
fi
.
lk
.
Unlock
()
return
fi
.
mod
.
Seek
(
offset
,
whence
)
}
func
(
fi
*
file
)
WriteAt
(
b
[]
byte
,
at
int64
)
(
int
,
error
)
{
fi
.
lk
.
Lock
()
defer
fi
.
lk
.
Unlock
()
fi
.
hasChanges
=
true
return
fi
.
mod
.
WriteAt
(
b
,
at
)
}
func
(
fi
*
file
)
Size
()
(
int64
,
error
)
{
fi
.
lk
.
Lock
()
defer
fi
.
lk
.
Unlock
()
return
fi
.
mod
.
Size
()
}
func
(
fi
*
file
)
GetNode
()
(
*
dag
.
Node
,
error
)
{
fi
.
lk
.
Lock
()
defer
fi
.
lk
.
Unlock
()
return
fi
.
mod
.
GetNode
()
}
func
(
fi
*
file
)
Truncate
(
size
int64
)
error
{
fi
.
lk
.
Lock
()
defer
fi
.
lk
.
Unlock
()
fi
.
hasChanges
=
true
return
fi
.
mod
.
Truncate
(
size
)
}
...
...
ipnsfs/system_test.go
浏览文件 @
4f76e473
...
...
@@ -21,6 +21,8 @@ func testFS(t *testing.T, nd *core.IpfsNode) *Filesystem {
return
fs
}
// Test some basic operations
// testing in fuse/ipns is sufficient to prove this code works properly
func
TestBasic
(
t
*
testing
.
T
)
{
mock
,
err
:=
core
.
NewMockNode
()
if
err
!=
nil
{
...
...
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论