From bdefba382234a5412e3376051b9cbca74a6fd05e Mon Sep 17 00:00:00 2001 From: Aaron Jacobs Date: Wed, 4 Mar 2015 14:57:53 +1100 Subject: [PATCH] Added server support for CreateFile. --- server.go | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/server.go b/server.go index 14c8f15..37ef2ac 100644 --- a/server.go +++ b/server.go @@ -195,6 +195,35 @@ func (s *server) handleFuseRequest(fuseReq bazilfuse.Request) { s.logger.Println("Responding:", fuseResp) typed.Respond(fuseResp) + case *bazilfuse.CreateRequest: + // Convert the request. + req := &CreateFileRequest{ + Header: convertHeader(typed.Header), + Parent: InodeID(typed.Header.Node), + Name: typed.Name, + Mode: typed.Mode, + Flags: typed.Flags, + } + + // Call the file system. + resp, err := s.fs.CreateFile(ctx, req) + if err != nil { + s.logger.Println("Responding:", err) + typed.RespondError(err) + return + } + + // Convert the response. + fuseResp := &bazilfuse.CreateResponse{ + OpenResponse: bazilfuse.OpenResponse{ + Handle: bazilfuse.HandleID(resp.Handle), + }, + } + convertChildInodeEntry(s.clock, &resp.Entry, &fuseResp.LookupResponse) + + s.logger.Println("Responding:", fuseResp) + typed.Respond(fuseResp) + case *bazilfuse.RemoveRequest: // We don't yet support files. if !typed.Dir {