Handle each op in its own goroutine.

geesefs-0-30-9
Aaron Jacobs 2015-04-02 10:52:58 +11:00
parent 4d06d8aef8
commit 0461ddac4f
1 changed files with 62 additions and 58 deletions

View File

@ -104,63 +104,67 @@ func (s fileSystemServer) ServeOps(c *fuse.Connection) {
panic(err)
}
switch typed := op.(type) {
default:
op.Respond(fuse.ENOSYS)
case *fuseops.InitOp:
s.fs.Init(typed)
case *fuseops.LookUpInodeOp:
s.fs.LookUpInode(typed)
case *fuseops.GetInodeAttributesOp:
s.fs.GetInodeAttributes(typed)
case *fuseops.SetInodeAttributesOp:
s.fs.SetInodeAttributes(typed)
case *fuseops.ForgetInodeOp:
s.fs.ForgetInode(typed)
case *fuseops.MkDirOp:
s.fs.MkDir(typed)
case *fuseops.CreateFileOp:
s.fs.CreateFile(typed)
case *fuseops.RmDirOp:
s.fs.RmDir(typed)
case *fuseops.UnlinkOp:
s.fs.Unlink(typed)
case *fuseops.OpenDirOp:
s.fs.OpenDir(typed)
case *fuseops.ReadDirOp:
s.fs.ReadDir(typed)
case *fuseops.ReleaseDirHandleOp:
s.fs.ReleaseDirHandle(typed)
case *fuseops.OpenFileOp:
s.fs.OpenFile(typed)
case *fuseops.ReadFileOp:
s.fs.ReadFile(typed)
case *fuseops.WriteFileOp:
s.fs.WriteFile(typed)
case *fuseops.SyncFileOp:
s.fs.SyncFile(typed)
case *fuseops.FlushFileOp:
s.fs.FlushFile(typed)
case *fuseops.ReleaseFileHandleOp:
s.fs.ReleaseFileHandle(typed)
}
go s.handleOp(op)
}
}
func (s fileSystemServer) handleOp(op fuseops.Op) {
switch typed := op.(type) {
default:
op.Respond(fuse.ENOSYS)
case *fuseops.InitOp:
s.fs.Init(typed)
case *fuseops.LookUpInodeOp:
s.fs.LookUpInode(typed)
case *fuseops.GetInodeAttributesOp:
s.fs.GetInodeAttributes(typed)
case *fuseops.SetInodeAttributesOp:
s.fs.SetInodeAttributes(typed)
case *fuseops.ForgetInodeOp:
s.fs.ForgetInode(typed)
case *fuseops.MkDirOp:
s.fs.MkDir(typed)
case *fuseops.CreateFileOp:
s.fs.CreateFile(typed)
case *fuseops.RmDirOp:
s.fs.RmDir(typed)
case *fuseops.UnlinkOp:
s.fs.Unlink(typed)
case *fuseops.OpenDirOp:
s.fs.OpenDir(typed)
case *fuseops.ReadDirOp:
s.fs.ReadDir(typed)
case *fuseops.ReleaseDirHandleOp:
s.fs.ReleaseDirHandle(typed)
case *fuseops.OpenFileOp:
s.fs.OpenFile(typed)
case *fuseops.ReadFileOp:
s.fs.ReadFile(typed)
case *fuseops.WriteFileOp:
s.fs.WriteFile(typed)
case *fuseops.SyncFileOp:
s.fs.SyncFile(typed)
case *fuseops.FlushFileOp:
s.fs.FlushFile(typed)
case *fuseops.ReleaseFileHandleOp:
s.fs.ReleaseFileHandle(typed)
}
}