@cryptotaxi247 / kubo / commits / 4f76e473d

a bit of cleanup

Jeromy committed Mar 12, 2015 at 13:34 UTC 4f76e473d06409aaf24c221a2d2a23f352e14c4b
3 files changed +15 -27
ipnsfs/dir.go
+12 -5
@@ -11,6 +11,9 @@ import (
11 ufspb "github.com/jbenet/go-ipfs/unixfs/pb"
12 )
13
14 +var ErrNotYetImplemented = errors.New("not yet implemented")
15 +var ErrInvalidChild = errors.New("invalid child node")
16 +
17 type Directory struct {
18 fs *Filesystem
19 parent childCloser
@@ -128,9 +131,9 @@ func (d *Directory) childFile(name string) (*file, error) {
131 d.files[name] = nfi
132 return nfi, nil
133 case ufspb.Data_Metadata:
131 - panic("NOT YET IMPLEMENTED")
134 + return nil, ErrNotYetImplemented
135 default:
133 - panic("NO!")
136 + return nil, ErrInvalidChild
137 }
138 }
139 }
@@ -162,9 +165,9 @@ func (d *Directory) childDir(name string) (*Directory, error) {
165 case ufspb.Data_File:
166 return nil, fmt.Errorf("%s is not a directory", name)
167 case ufspb.Data_Metadata:
165 - panic("NOT YET IMPLEMENTED")
168 + return nil, ErrNotYetImplemented
169 default:
167 - panic("NO!")
170 + return nil, ErrInvalidChild
171 }
172 }
173
@@ -247,7 +250,9 @@ func (d *Directory) Unlink(name string) error {
250 return d.parent.closeChild(d.name, d.node)
251 }
252
253 +// RenameEntry renames the child by 'oldname' of this directory to 'newname'
254 func (d *Directory) RenameEntry(oldname, newname string) error {
255 + // Is the child a directory?
256 dir, err := d.childDir(oldname)
257 if err == nil {
258 dir.name = newname
@@ -266,6 +271,7 @@ func (d *Directory) RenameEntry(oldname, newname string) error {
271 return d.parent.closeChild(d.name, d.node)
272 }
273
274 + // Is the child a file?
275 fi, err := d.childFile(oldname)
276 if err == nil {
277 fi.name = newname
@@ -292,6 +298,7 @@ func (d *Directory) RenameEntry(oldname, newname string) error {
298 return ErrNoSuch
299 }
300
301 +// AddChild adds the node 'nd' under this directory giving it the name 'name'
302 func (d *Directory) AddChild(name string, nd *dag.Node) error {
303 pbn, err := ft.FromBytes(nd.Data)
304 if err != nil {
@@ -318,7 +325,7 @@ func (d *Directory) AddChild(name string, nd *dag.Node) error {
325 }
326 d.files[name] = nfi
327 default:
321 - panic("invalid unixfs node")
328 + return ErrInvalidChild
329 }
330 return d.parent.closeChild(d.name, d.node)
331 }
ipnsfs/file.go
+1 -22
@@ -4,7 +4,6 @@ import (
4 "errors"
5 "io"
6 "os"
7 - "sync"
7
8 chunk "github.com/jbenet/go-ipfs/importer/chunk"
9 dag "github.com/jbenet/go-ipfs/merkledag"
@@ -30,13 +29,11 @@ type file struct {
29 name string
30 hasChanges bool
31
33 - // TODO: determine whether or not locking here is actually required...
34 - lk sync.Mutex
32 mod *mod.DagModifier
33 }
34
35 func NewFile(name string, node *dag.Node, parent childCloser, fs *Filesystem) (*file, error) {
39 - dmod, err := mod.NewDagModifier(context.TODO(), node, fs.dserv, fs.pins.GetManual(), chunk.DefaultSplitter)
36 + dmod, err := mod.NewDagModifier(context.Background(), node, fs.dserv, fs.pins.GetManual(), chunk.DefaultSplitter)
37 if err != nil {
38 return nil, err
39 }
@@ -50,21 +47,15 @@ func NewFile(name string, node *dag.Node, parent childCloser, fs *Filesystem) (*
47 }
48
49 func (fi *file) Write(b []byte) (int, error) {
53 - fi.lk.Lock()
54 - defer fi.lk.Unlock()
50 fi.hasChanges = true
51 return fi.mod.Write(b)
52 }
53
54 func (fi *file) Read(b []byte) (int, error) {
60 - fi.lk.Lock()
61 - defer fi.lk.Unlock()
55 return fi.mod.Read(b)
56 }
57
58 func (fi *file) Close() error {
66 - fi.lk.Lock()
67 - defer fi.lk.Unlock()
59 if fi.hasChanges {
60 err := fi.mod.Flush()
61 if err != nil {
@@ -88,8 +79,6 @@ func (fi *file) Close() error {
79 }
80
81 func (fi *file) Flush() error {
91 - fi.lk.Lock()
92 - defer fi.lk.Unlock()
82 return fi.mod.Flush()
83 }
84
@@ -101,33 +90,23 @@ func (fi *file) withMode(mode int) File {
90 }
91
92 func (fi *file) Seek(offset int64, whence int) (int64, error) {
104 - fi.lk.Lock()
105 - defer fi.lk.Unlock()
93 return fi.mod.Seek(offset, whence)
94 }
95
96 func (fi *file) WriteAt(b []byte, at int64) (int, error) {
110 - fi.lk.Lock()
111 - defer fi.lk.Unlock()
97 fi.hasChanges = true
98 return fi.mod.WriteAt(b, at)
99 }
100
101 func (fi *file) Size() (int64, error) {
117 - fi.lk.Lock()
118 - defer fi.lk.Unlock()
102 return fi.mod.Size()
103 }
104
105 func (fi *file) GetNode() (*dag.Node, error) {
123 - fi.lk.Lock()
124 - defer fi.lk.Unlock()
106 return fi.mod.GetNode()
107 }
108
109 func (fi *file) Truncate(size int64) error {
129 - fi.lk.Lock()
130 - defer fi.lk.Unlock()
110 fi.hasChanges = true
111 return fi.mod.Truncate(size)
112 }
ipnsfs/system_test.go
+2
@@ -21,6 +21,8 @@ func testFS(t *testing.T, nd *core.IpfsNode) *Filesystem {
21 return fs
22 }
23
24 +// Test some basic operations
25 +// testing in fuse/ipns is sufficient to prove this code works properly
26 func TestBasic(t *testing.T) {
27 mock, err := core.NewMockNode()
28 if err != nil {