diff options
| author | Chris Lu <chris.lu@gmail.com> | 2014-04-09 09:44:58 -0700 |
|---|---|---|
| committer | Chris Lu <chris.lu@gmail.com> | 2014-04-09 09:44:58 -0700 |
| commit | abde40377c74a0580e4821e21ef2402900b81d60 (patch) | |
| tree | 4f26b411d7748240a13b19edadcbaac78a9d82f5 /go/filer/filer_embedded.go | |
| parent | 67be8a5af8cd731de4cbe81feb3328b99303f9ef (diff) | |
| download | seaweedfs-abde40377c74a0580e4821e21ef2402900b81d60.tar.xz seaweedfs-abde40377c74a0580e4821e21ef2402900b81d60.zip | |
a correct implementation of filer
Diffstat (limited to 'go/filer/filer_embedded.go')
| -rw-r--r-- | go/filer/filer_embedded.go | 64 |
1 files changed, 64 insertions, 0 deletions
diff --git a/go/filer/filer_embedded.go b/go/filer/filer_embedded.go new file mode 100644 index 000000000..b1ef38be4 --- /dev/null +++ b/go/filer/filer_embedded.go @@ -0,0 +1,64 @@ +package filer + +import ( + "path/filepath" +) + +type FilerEmbedded struct { + directories *DirectoryManagerInMap + files *FileListInLevelDb +} + +func NewFilerEmbedded(dir string) (filer *FilerEmbedded, err error) { + dm, de := NewDirectoryManagerInMap(filepath.Join(dir, "dir.log")) + if de != nil { + return nil, de + } + fl, fe := NewFileListInLevelDb(dir) + if fe != nil { + return nil, fe + } + filer = &FilerEmbedded{ + directories: dm, + files: fl, + } + return +} + +func (filer *FilerEmbedded) CreateFile(filePath string, fid string) (err error) { + dir, file := filepath.Split(filePath) + dirId, e := filer.directories.MakeDirectory(dir) + if e != nil { + return e + } + return filer.files.CreateFile(dirId, file, fid) +} +func (filer *FilerEmbedded) FindFile(filePath string) (fid string, err error) { + dir, file := filepath.Split(filePath) + dirId, e := filer.directories.FindDirectory(dir) + if e != nil { + return "", e + } + return filer.files.FindFile(dirId, file) +} +func (filer *FilerEmbedded) ListDirectories(dirPath string) (dirs []DirectoryEntry, err error) { + return filer.directories.ListDirectories(dirPath) +} +func (filer *FilerEmbedded) ListFiles(dirPath string, lastFileName string, limit int) (files []FileEntry, err error) { + dirId, e := filer.directories.FindDirectory(dirPath) + if e != nil { + return nil, e + } + return filer.files.ListFiles(dirId, lastFileName, limit), nil +} +func (filer *FilerEmbedded) DeleteDirectory(dirPath string) (err error) { + return filer.directories.DeleteDirectory(dirPath) +} +func (filer *FilerEmbedded) DeleteFile(filePath string) (fid string, err error) { + dir, file := filepath.Split(filePath) + dirId, e := filer.directories.FindDirectory(dir) + if e != nil { + return "", e + } + return filer.files.DeleteFile(dirId, file) +} |
