]> Sergey Matveev's repositories - btrtrc.git/blob - fs/filenode.go
Add the fs test torrent to the repo
[btrtrc.git] / fs / filenode.go
1 package torrentfs
2
3 import (
4         "io"
5
6         "bazil.org/fuse"
7         fusefs "bazil.org/fuse/fs"
8         "golang.org/x/net/context"
9 )
10
11 type fileNode struct {
12         node
13         size          uint64
14         TorrentOffset int64
15 }
16
17 var (
18         _ fusefs.NodeOpener = fileNode{}
19 )
20
21 func (fn fileNode) Attr(ctx context.Context, attr *fuse.Attr) error {
22         attr.Size = fn.size
23         attr.Mode = defaultMode
24         return nil
25 }
26
27 func (fn fileNode) Open(ctx context.Context, req *fuse.OpenRequest, resp *fuse.OpenResponse) (fusefs.Handle, error) {
28         r := fn.t.NewReader()
29         r.Seek(fn.TorrentOffset, io.SeekStart)
30         return fileHandle{fn, r}, nil
31 }