Added FUSE support #55

Merged
Elara6331 merged 65 commits from yannickulrich/itd:fuse into master 2023-03-25 22:23:52 +00:00
Showing only changes of commit e2bd52b5a0 - Show all commits

11
fuse.go
View File

@ -248,6 +248,7 @@ func (fh *bytesFileReadHandle) Read(ctx context.Context, dest []byte, off int64)
type sensorFileReadHandle struct {
ch <-chan uint8
cancel context.CancelFunc
}
var _ = (fs.FileReader)((*sensorFileReadHandle)(nil))
func (fh *sensorFileReadHandle) Read(ctx context.Context, dest []byte, off int64) (fuse.ReadResult, syscall.Errno) {
@ -256,6 +257,12 @@ func (fh *sensorFileReadHandle) Read(ctx context.Context, dest []byte, off int64
return fuse.ReadResultData(content), 0
}
var _ = (fs.FileFlusher)((*sensorFileReadHandle)(nil))
func (fh *sensorFileReadHandle) Flush(ctx context.Context) (errno syscall.Errno) {
fh.cancel()
return 0
}
type bytesFileWriteHandle struct {
content []byte
@ -395,13 +402,15 @@ func (f *ITNode) Open(ctx context.Context, openFlags uint32) (fh fs.FileHandle,
for _, value := range properties {
if value.Ino == f.Ino {
ans, err := value.gen(ctx)
sub_ctx, cancel := context.WithCancel(ctx)
ans, err := value.gen(sub_ctx)
if err != nil {
return nil, 0, syscall.EROFS
}
fh = &sensorFileReadHandle{
ch: ans,
cancel : cancel,
}
return fh, fuse.FOPEN_DIRECT_IO, 0
}