LevelDB 文件操作

来源:互联网 发布:keil软件调试 编辑:程序博客网 时间:2024/05/12 21:13

LevelDB 文件操作
flyfish 2015-9-30

三个接口
SequentialFile
RandomAccessFile
WritableFile

class Slice{ private:     const char* data_;     size_t size_;};Sli

ce包括指向外部字符数组的指针和它的长度
string和Slice之间转换很方便

// A file abstraction for reading sequentially through a fileclass SequentialFile { public:  SequentialFile() { }  virtual ~SequentialFile();  virtual Status Read(size_t n, Slice* result, char* scratch) = 0;  virtual Status Skip(uint64_t n) = 0;};
// A file abstraction for randomly reading the contents of a file.class RandomAccessFile { public:  RandomAccessFile() { }  virtual ~RandomAccessFile();  virtual Status Read(uint64_t offset, size_t n, Slice* result,                      char* scratch) const = 0;};
class WritableFile { public:  WritableFile() { }  virtual ~WritableFile();  virtual Status Append(const Slice& data) = 0;  virtual Status Close() = 0;  virtual Status Flush() = 0;  virtual Status Sync() = 0; private:  // No copying allowed  WritableFile(const WritableFile&);  void operator=(const WritableFile&);};

每个接口有几个函数,这几个接口在各个平台下有自个的实现
这几个纯虚函数 必须在派生类中实现

class SequentialFileImpl : public SequentialFile{};class RandomAccessFileImpl : public RandomAccessFile{};class WritableFileImpl : public WritableFile{};

为了移植性文件操作最终抽象成接口env的一部分

0 0
原创粉丝点击