Added a RespondToOp helper.
parent
e96100b5ac
commit
c1a851403d
|
@ -64,6 +64,29 @@ func NewFileSystemServer(fs FileSystem) fuse.Server {
|
||||||
return fileSystemServer{fs}
|
return fileSystemServer{fs}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// A convenience function that makes it easy to ensure you respond to an
|
||||||
|
// operation when a FileSystem method returns. Responds to op with the current
|
||||||
|
// value of *err.
|
||||||
|
//
|
||||||
|
// For example:
|
||||||
|
//
|
||||||
|
// func (fs *myFS) ReadFile(op *fuseops.ReadFileOp) {
|
||||||
|
// var err error
|
||||||
|
// defer fuseutil.RespondToOp(op, &err)
|
||||||
|
//
|
||||||
|
// if err = fs.frobnicate(); err != nil {
|
||||||
|
// err = fmt.Errorf("frobnicate: %v", err)
|
||||||
|
// return
|
||||||
|
// }
|
||||||
|
//
|
||||||
|
// // Lots more manipulation of err, and return paths.
|
||||||
|
// // [...]
|
||||||
|
// }
|
||||||
|
//
|
||||||
|
func RespondToOp(op fuseops.Op, err *error) {
|
||||||
|
op.Respond(*err)
|
||||||
|
}
|
||||||
|
|
||||||
type fileSystemServer struct {
|
type fileSystemServer struct {
|
||||||
fs FileSystem
|
fs FileSystem
|
||||||
}
|
}
|
||||||
|
|
|
@ -149,14 +149,14 @@ func (fs *helloFS) patchAttributes(
|
||||||
|
|
||||||
func (fs *helloFS) Init(op *fuseops.InitOp) {
|
func (fs *helloFS) Init(op *fuseops.InitOp) {
|
||||||
var err error
|
var err error
|
||||||
defer func() { op.Respond(err) }()
|
defer fuseutil.RespondToOp(op, &err)
|
||||||
|
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
func (fs *helloFS) LookUpInode(op *fuseops.LookUpInodeOp) {
|
func (fs *helloFS) LookUpInode(op *fuseops.LookUpInodeOp) {
|
||||||
var err error
|
var err error
|
||||||
defer func() { op.Respond(err) }()
|
defer fuseutil.RespondToOp(op, &err)
|
||||||
|
|
||||||
// Find the info for the parent.
|
// Find the info for the parent.
|
||||||
parentInfo, ok := gInodeInfo[op.Parent]
|
parentInfo, ok := gInodeInfo[op.Parent]
|
||||||
|
@ -184,7 +184,7 @@ func (fs *helloFS) LookUpInode(op *fuseops.LookUpInodeOp) {
|
||||||
func (fs *helloFS) GetInodeAttributes(
|
func (fs *helloFS) GetInodeAttributes(
|
||||||
op *fuseops.GetInodeAttributesOp) {
|
op *fuseops.GetInodeAttributesOp) {
|
||||||
var err error
|
var err error
|
||||||
defer func() { op.Respond(err) }()
|
defer fuseutil.RespondToOp(op, &err)
|
||||||
|
|
||||||
// Find the info for this inode.
|
// Find the info for this inode.
|
||||||
info, ok := gInodeInfo[op.Inode]
|
info, ok := gInodeInfo[op.Inode]
|
||||||
|
@ -205,7 +205,7 @@ func (fs *helloFS) GetInodeAttributes(
|
||||||
func (fs *helloFS) OpenDir(
|
func (fs *helloFS) OpenDir(
|
||||||
op *fuseops.OpenDirOp) {
|
op *fuseops.OpenDirOp) {
|
||||||
var err error
|
var err error
|
||||||
defer func() { op.Respond(err) }()
|
defer fuseutil.RespondToOp(op, &err)
|
||||||
|
|
||||||
// Allow opening any directory.
|
// Allow opening any directory.
|
||||||
return
|
return
|
||||||
|
@ -214,7 +214,7 @@ func (fs *helloFS) OpenDir(
|
||||||
func (fs *helloFS) ReadDir(
|
func (fs *helloFS) ReadDir(
|
||||||
op *fuseops.ReadDirOp) {
|
op *fuseops.ReadDirOp) {
|
||||||
var err error
|
var err error
|
||||||
defer func() { op.Respond(err) }()
|
defer fuseutil.RespondToOp(op, &err)
|
||||||
|
|
||||||
// Find the info for this inode.
|
// Find the info for this inode.
|
||||||
info, ok := gInodeInfo[op.Inode]
|
info, ok := gInodeInfo[op.Inode]
|
||||||
|
@ -253,7 +253,7 @@ func (fs *helloFS) ReadDir(
|
||||||
func (fs *helloFS) OpenFile(
|
func (fs *helloFS) OpenFile(
|
||||||
op *fuseops.OpenFileOp) {
|
op *fuseops.OpenFileOp) {
|
||||||
var err error
|
var err error
|
||||||
defer func() { op.Respond(err) }()
|
defer fuseutil.RespondToOp(op, &err)
|
||||||
|
|
||||||
// Allow opening any file.
|
// Allow opening any file.
|
||||||
return
|
return
|
||||||
|
@ -262,7 +262,7 @@ func (fs *helloFS) OpenFile(
|
||||||
func (fs *helloFS) ReadFile(
|
func (fs *helloFS) ReadFile(
|
||||||
op *fuseops.ReadFileOp) {
|
op *fuseops.ReadFileOp) {
|
||||||
var err error
|
var err error
|
||||||
defer func() { op.Respond(err) }()
|
defer fuseutil.RespondToOp(op, &err)
|
||||||
|
|
||||||
// Let io.ReaderAt deal with the semantics.
|
// Let io.ReaderAt deal with the semantics.
|
||||||
reader := strings.NewReader("Hello, world!")
|
reader := strings.NewReader("Hello, world!")
|
||||||
|
|
Loading…
Reference in New Issue