2. Dropped channel in sensorFileReadHandle
This commit is contained in:
parent
98775600af
commit
008f6b35a9
@ -265,18 +265,20 @@ func (fh *bytesFileReadHandle) Read(ctx context.Context, dest []byte, off int64)
|
|||||||
}
|
}
|
||||||
|
|
||||||
type sensorFileReadHandle struct {
|
type sensorFileReadHandle struct {
|
||||||
ch <-chan []byte
|
content []byte
|
||||||
cancel context.CancelFunc
|
|
||||||
}
|
}
|
||||||
var _ fs.FileReader = (*sensorFileReadHandle)(nil)
|
var _ fs.FileReader = (*sensorFileReadHandle)(nil)
|
||||||
func (fh *sensorFileReadHandle) Read(ctx context.Context, dest []byte, off int64) (fuse.ReadResult, syscall.Errno) {
|
func (fh *sensorFileReadHandle) Read(ctx context.Context, dest []byte, off int64) (fuse.ReadResult, syscall.Errno) {
|
||||||
content := <-fh.ch
|
log.Info("Executing Read").Int("size", len(fh.content)).Send()
|
||||||
return fuse.ReadResultData(content), 0
|
end := off + int64(len(dest))
|
||||||
|
if end > int64(len(fh.content)) {
|
||||||
|
end = int64(len(fh.content))
|
||||||
|
}
|
||||||
|
return fuse.ReadResultData(fh.content[off:end]), 0
|
||||||
}
|
}
|
||||||
|
|
||||||
var _ fs.FileFlusher = (*sensorFileReadHandle)(nil)
|
var _ fs.FileFlusher = (*sensorFileReadHandle)(nil)
|
||||||
func (fh *sensorFileReadHandle) Flush(ctx context.Context) (errno syscall.Errno) {
|
func (fh *sensorFileReadHandle) Flush(ctx context.Context) (errno syscall.Errno) {
|
||||||
fh.cancel()
|
|
||||||
return 0
|
return 0
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -428,15 +430,13 @@ func (f *ITNode) Open(ctx context.Context, openFlags uint32) (fh fs.FileHandle,
|
|||||||
|
|
||||||
for _, value := range properties {
|
for _, value := range properties {
|
||||||
if value.Ino == f.Ino {
|
if value.Ino == f.Ino {
|
||||||
sub_ctx, cancel := context.WithCancel(ctx)
|
ans, err := value.gen()
|
||||||
ans, err := value.gen(sub_ctx)
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, 0, syscallErr(err)
|
return nil, 0, syscallErr(err)
|
||||||
}
|
}
|
||||||
|
|
||||||
fh = &sensorFileReadHandle{
|
fh = &sensorFileReadHandle{
|
||||||
ch: ans,
|
content : ans,
|
||||||
cancel : cancel,
|
|
||||||
}
|
}
|
||||||
return fh, fuse.FOPEN_DIRECT_IO, 0
|
return fh, fuse.FOPEN_DIRECT_IO, 0
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user