7 fusefs "bazil.org/fuse/fs"
8 "golang.org/x/net/context"
11 type fileNode struct {
17 var _ fusefs.HandleReader = fileNode{}
19 func (fn fileNode) Attr(ctx context.Context, attr *fuse.Attr) error {
21 attr.Mode = defaultMode
25 func (fn fileNode) Read(ctx context.Context, req *fuse.ReadRequest, resp *fuse.ReadResponse) error {
26 torrentfsReadRequests.Add(1)
28 panic("read on directory")
31 fileLeft := int64(fn.size) - req.Offset
35 if fileLeft < int64(size) {
38 resp.Data = resp.Data[:size]
39 if len(resp.Data) == 0 {
42 torrentOff := fn.TorrentOffset + req.Offset
43 n, err := readFull(ctx, fn.FS, fn.t, torrentOff, resp.Data)
48 panic(fmt.Sprintf("%d < %d", n, size))