implements check and fixed argument ordering
Henry committed
Feb 28, 2015 at 14:28 UTC
335caf0bc74f4629765d858527a044aa9fc333bb
2 files changed
+37
-12
fuse/ipns/ipns_unix.go
+25
-9
@@ -360,7 +360,7 @@ func (s *Node) Read(req *fuse.ReadRequest, resp *fuse.ReadResponse, ctx context.
360
return err // may be non-nil / not succeeded
361
}
362
363
-func (n *Node) Write(req *fuse.WriteRequest, resp *fuse.WriteResponse, ctx context.Context) error {
363
+func (n *Node) Write(ctx context.Context, req *fuse.WriteRequest, resp *fuse.WriteResponse) error {
364
// log.Debugf("ipns: Node Write [%s]: flags = %s, offset = %d, size = %d", n.name, req.Flags.String(), req.Offset, len(req.Data))
365
if IpnsReadonly {
366
log.Debug("Attempted to write on readonly ipns filesystem.")
@@ -383,7 +383,7 @@ func (n *Node) Write(req *fuse.WriteRequest, resp *fuse.WriteResponse, ctx conte
383
return nil
384
}
385
386
-func (n *Node) Flush(req *fuse.FlushRequest, ctx context.Context) error {
386
+func (n *Node) Flush(ctx context.Context, req *fuse.FlushRequest) error {
387
if IpnsReadonly {
388
return nil
389
}
@@ -470,11 +470,11 @@ func (n *Node) republishRoot() error {
470
return nil
471
}
472
473
-func (n *Node) Fsync(req *fuse.FsyncRequest, ctx context.Context) error {
473
+func (n *Node) Fsync(ctx context.Context, req *fuse.FsyncRequest) error {
474
return nil
475
}
476
477
-func (n *Node) Mkdir(req *fuse.MkdirRequest, ctx context.Context) (fs.Node, error) {
477
+func (n *Node) Mkdir(ctx context.Context, req *fuse.MkdirRequest) (fs.Node, error) {
478
if IpnsReadonly {
479
return nil, fuse.EPERM
480
}
@@ -508,7 +508,7 @@ func (n *Node) Mkdir(req *fuse.MkdirRequest, ctx context.Context) (fs.Node, erro
508
return child, nil
509
}
510
511
-func (n *Node) Open(req *fuse.OpenRequest, resp *fuse.OpenResponse, ctx context.Context) (fs.Handle, error) {
511
+func (n *Node) Open(ctx context.Context, req *fuse.OpenRequest, resp *fuse.OpenResponse) (fs.Handle, error) {
512
//log.Debug("[%s] Received open request! flags = %s", n.name, req.Flags.String())
513
//TODO: check open flags and truncate if necessary
514
if req.Flags&fuse.OpenTruncate != 0 {
@@ -521,11 +521,11 @@ func (n *Node) Open(req *fuse.OpenRequest, resp *fuse.OpenResponse, ctx context.
521
return n, nil
522
}
523
524
-func (n *Node) Mknod(req *fuse.MknodRequest, ctx context.Context) (fs.Node, error) {
524
+func (n *Node) Mknod(ctx context.Context, req *fuse.MknodRequest) (fs.Node, error) {
525
return nil, nil
526
}
527
528
-func (n *Node) Create(req *fuse.CreateRequest, resp *fuse.CreateResponse, ctx context.Context) (fs.Node, fs.Handle, error) {
528
+func (n *Node) Create(ctx context.Context, req *fuse.CreateRequest, resp *fuse.CreateResponse) (fs.Node, fs.Handle, error) {
529
if IpnsReadonly {
530
log.Debug("Attempted to call Create on a readonly filesystem.")
531
return nil, nil, fuse.EPERM
@@ -555,7 +555,7 @@ func (n *Node) Create(req *fuse.CreateRequest, resp *fuse.CreateResponse, ctx co
555
return child, child, nil
556
}
557
558
-func (n *Node) Remove(req *fuse.RemoveRequest, ctx context.Context) error {
558
+func (n *Node) Remove(ctx context.Context, req *fuse.RemoveRequest) error {
559
if IpnsReadonly {
560
return fuse.EPERM
561
}
@@ -578,7 +578,7 @@ func (n *Node) Remove(req *fuse.RemoveRequest, ctx context.Context) error {
578
return nil
579
}
580
581
-func (n *Node) Rename(req *fuse.RenameRequest, newDir fs.Node, ctx context.Context) error {
581
+func (n *Node) Rename(ctx context.Context, req *fuse.RenameRequest, newDir fs.Node) error {
582
if IpnsReadonly {
583
log.Debug("Attempted to call Rename on a readonly filesystem.")
584
return fuse.EPERM
@@ -625,3 +625,19 @@ func (n *Node) update(name string, newnode *mdag.Node) error {
625
n.Nd = nnode
626
return nil
627
}
628
+
629
+// to check that out Node implements all the interfaces we want
630
+type ipnsNode interface {
631
+ fs.Node
632
+ fs.HandleWriter
633
+ fs.HandleFlusher
634
+ fs.NodeFsyncer
635
+ fs.NodeMkdirer
636
+ fs.NodeOpener
637
+ fs.NodeMknoder
638
+ fs.NodeCreater
639
+ fs.NodeRemover
640
+ fs.NodeRenamer
641
+}
642
+
643
+var _ ipnsNode = (*Node)(nil)
fuse/readonly/readonly_unix.go
+12
-3
@@ -50,7 +50,7 @@ func (*Root) Attr() fuse.Attr {
50
}
51
52
// Lookup performs a lookup under this node.
53
-func (s *Root) Lookup(name string, ctx context.Context) (fs.Node, error) {
53
+func (s *Root) Lookup(ctx context.Context, name string) (fs.Node, error) {
54
log.Debugf("Root Lookup: '%s'", name)
55
switch name {
56
case "mach_kernel", ".hidden", "._.":
@@ -116,7 +116,7 @@ func (s *Node) Attr() fuse.Attr {
116
}
117
118
// Lookup performs a lookup under this node.
119
-func (s *Node) Lookup(name string, ctx context.Context) (fs.Node, error) {
119
+func (s *Node) Lookup(ctx context.Context, name string) (fs.Node, error) {
120
log.Debugf("Lookup '%s'", name)
121
nodes, err := s.Ipfs.Resolver.ResolveLinks(s.Nd, []string{name})
122
if err != nil {
@@ -145,7 +145,7 @@ func (s *Node) ReadDir(ctx context.Context) ([]fuse.Dirent, error) {
145
return nil, fuse.ENOENT
146
}
147
148
-func (s *Node) Read(req *fuse.ReadRequest, resp *fuse.ReadResponse, ctx context.Context) error {
148
+func (s *Node) Read(ctx context.Context, req *fuse.ReadRequest, resp *fuse.ReadResponse) error {
149
150
k, err := s.Nd.Key()
151
if err != nil {
@@ -178,3 +178,12 @@ func (s *Node) Read(req *fuse.ReadRequest, resp *fuse.ReadResponse, ctx context.
178
lm["res_size"] = n
179
return nil // may be non-nil / not succeeded
180
}
181
+
182
+// to check that out Node implements all the interfaces we want
183
+type roNode interface {
184
+ fs.Node
185
+ fs.NodeStringLookuper
186
+ fs.HandleReader
187
+}
188
+
189
+var _ roNode = (*Node)(nil)