read file fix
This commit is contained in:
@@ -11,6 +11,7 @@ import (
|
||||
"bazil.org/fuse"
|
||||
"bazil.org/fuse/fs"
|
||||
"github.com/debridmediamanager.com/zurg/internal/torrent"
|
||||
"github.com/debridmediamanager.com/zurg/internal/universal"
|
||||
)
|
||||
|
||||
// define variable as rootObject id
|
||||
@@ -26,6 +27,7 @@ type Object struct {
|
||||
objType int
|
||||
parentName string
|
||||
name string
|
||||
torrent *torrent.Torrent
|
||||
file *torrent.File
|
||||
size uint64
|
||||
mtime time.Time
|
||||
@@ -136,6 +138,7 @@ func (o Object) Lookup(ctx context.Context, name string) (fs.Node, error) {
|
||||
objType: FILE,
|
||||
parentName: o.name,
|
||||
name: name,
|
||||
torrent: torrent,
|
||||
file: file,
|
||||
size: uint64(file.Bytes),
|
||||
mtime: convertRFC3339toTime(file.Added),
|
||||
@@ -152,14 +155,17 @@ func (o Object) Open(ctx context.Context, req *fuse.OpenRequest, resp *fuse.Open
|
||||
|
||||
// Read reads some bytes or the whole file
|
||||
func (o Object) Read(ctx context.Context, req *fuse.ReadRequest, resp *fuse.ReadResponse) error {
|
||||
o.fs.log.Debugf("Read %s (total size %d) req offset %d req size %d", o.name, o.size, req.Offset, req.Size)
|
||||
data, err := o.fs.chunk.GetChunk(o.file, req.Offset, int64(req.Size))
|
||||
if nil != err {
|
||||
o.fs.log.Warnf("%v", err)
|
||||
reader := universal.GetFileReader(o.torrent, o.file, req.Offset, int(req.Size), o.fs.t, o.fs.c, o.fs.log)
|
||||
if reader == nil {
|
||||
return syscall.EIO
|
||||
}
|
||||
defer reader.Close()
|
||||
resp.Data = make([]byte, req.Size)
|
||||
_, err := reader.Read(resp.Data)
|
||||
if err != nil && err.Error() != "EOF" {
|
||||
o.fs.log.Errorf("Error reading bytes from Real-Debrid: %v", err)
|
||||
return syscall.EIO
|
||||
}
|
||||
|
||||
resp.Data = data
|
||||
return nil
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user