Support reading files in server.
parent
1d1fb83281
commit
4ef670f8b7
74
server.go
74
server.go
|
@ -147,7 +147,7 @@ func (s *server) handleFuseRequest(fuseReq bazilfuse.Request) {
|
||||||
typed.Respond(fuseResp)
|
typed.Respond(fuseResp)
|
||||||
|
|
||||||
case *bazilfuse.OpenRequest:
|
case *bazilfuse.OpenRequest:
|
||||||
// File or directory?
|
// Directory or file?
|
||||||
if typed.Dir {
|
if typed.Dir {
|
||||||
// Convert the request.
|
// Convert the request.
|
||||||
req := &OpenDirRequest{
|
req := &OpenDirRequest{
|
||||||
|
@ -195,36 +195,56 @@ func (s *server) handleFuseRequest(fuseReq bazilfuse.Request) {
|
||||||
}
|
}
|
||||||
|
|
||||||
case *bazilfuse.ReadRequest:
|
case *bazilfuse.ReadRequest:
|
||||||
// We support only directories at this point.
|
// Directory or file?
|
||||||
if !typed.Dir {
|
if typed.Dir {
|
||||||
s.logger.Println("We don't yet support files. Returning ENOSYS.")
|
// Convert the request.
|
||||||
typed.RespondError(ENOSYS)
|
req := &ReadDirRequest{
|
||||||
return
|
Inode: InodeID(typed.Header.Node),
|
||||||
}
|
Handle: HandleID(typed.Handle),
|
||||||
|
Offset: DirOffset(typed.Offset),
|
||||||
|
Size: typed.Size,
|
||||||
|
}
|
||||||
|
|
||||||
// Convert the request.
|
// Call the file system.
|
||||||
req := &ReadDirRequest{
|
resp, err := s.fs.ReadDir(ctx, req)
|
||||||
Inode: InodeID(typed.Header.Node),
|
if err != nil {
|
||||||
Handle: HandleID(typed.Handle),
|
s.logger.Print("Responding:", err)
|
||||||
Offset: DirOffset(typed.Offset),
|
typed.RespondError(err)
|
||||||
Size: typed.Size,
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
// Call the file system.
|
// Convert the response.
|
||||||
resp, err := s.fs.ReadDir(ctx, req)
|
fuseResp := &bazilfuse.ReadResponse{
|
||||||
if err != nil {
|
Data: resp.Data,
|
||||||
s.logger.Print("Responding:", err)
|
}
|
||||||
typed.RespondError(err)
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
// Convert the response.
|
s.logger.Print("Responding:", fuseResp)
|
||||||
fuseResp := &bazilfuse.ReadResponse{
|
typed.Respond(fuseResp)
|
||||||
Data: resp.Data,
|
} else {
|
||||||
}
|
// Convert the request.
|
||||||
|
req := &ReadFileRequest{
|
||||||
|
Inode: InodeID(typed.Header.Node),
|
||||||
|
Handle: HandleID(typed.Handle),
|
||||||
|
Offset: typed.Offset,
|
||||||
|
Size: typed.Size,
|
||||||
|
}
|
||||||
|
|
||||||
s.logger.Print("Responding:", fuseResp)
|
// Call the file system.
|
||||||
typed.Respond(fuseResp)
|
resp, err := s.fs.ReadFile(ctx, req)
|
||||||
|
if err != nil {
|
||||||
|
s.logger.Print("Responding:", err)
|
||||||
|
typed.RespondError(err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// Convert the response.
|
||||||
|
fuseResp := &bazilfuse.ReadResponse{
|
||||||
|
Data: resp.Data,
|
||||||
|
}
|
||||||
|
|
||||||
|
s.logger.Print("Responding:", fuseResp)
|
||||||
|
typed.Respond(fuseResp)
|
||||||
|
}
|
||||||
|
|
||||||
default:
|
default:
|
||||||
s.logger.Println("Unhandled type. Returning ENOSYS.")
|
s.logger.Println("Unhandled type. Returning ENOSYS.")
|
||||||
|
|
Loading…
Reference in New Issue