13 #ifndef STORAGE_LEVELDB_INCLUDE_ENV_H_ 14 #define STORAGE_LEVELDB_INCLUDE_ENV_H_ 26 class RandomAccessFile;
88 virtual bool FileExists(
const std::string& fname) = 0;
94 std::vector<std::string>* result) = 0;
110 const std::string& target) = 0;
140 void (*
function)(
void* arg),
145 virtual void StartThread(
void (*
function)(
void* arg),
void* arg) = 0;
183 virtual Status Read(
size_t n,
Slice* result,
char* scratch) = 0;
192 virtual Status Skip(uint64_t n) = 0;
215 virtual Status Read(uint64_t offset,
size_t n,
Slice* result,
216 char* scratch)
const = 0;
233 virtual Status Close() = 0;
234 virtual Status Flush() = 0;
235 virtual Status Sync() = 0;
250 virtual void Logv(
const char* format, va_list ap) = 0;
271 extern void Log(
Logger* info_log,
const char* format, ...)
272 # if defined(__GNUC__) || defined(__clang__) 273 __attribute__((__format__ (__printf__, 2, 3)))
279 const std::string& fname);
299 return target_->NewSequentialFile(f, r);
302 return target_->NewRandomAccessFile(f, r);
305 return target_->NewWritableFile(f, r);
308 return target_->NewAppendableFile(f, r);
310 bool FileExists(
const std::string& f) {
return target_->FileExists(f); }
312 return target_->GetChildren(dir, r);
318 return target_->GetFileSize(f, s);
321 return target_->RenameFile(s, t);
324 return target_->LockFile(f, l);
328 return target_->Schedule(f, a);
331 return target_->StartThread(f, a);
334 return target_->GetTestDirectory(path);
337 return target_->NewLogger(fname, result);
340 return target_->NowMicros();
343 target_->SleepForMicroseconds(micros);
351 #endif // STORAGE_LEVELDB_INCLUDE_ENV_H_
Status GetFileSize(const std::string &f, uint64_t *s)
Status NewWritableFile(const std::string &f, WritableFile **r)
bool FileExists(const std::string &f)
Status WriteStringToFile(Env *env, const Slice &data, const std::string &fname)
virtual Status UnlockFile(FileLock *lock)=0
void SleepForMicroseconds(int micros)
virtual void SleepForMicroseconds(int micros)=0
void Log(Logger *info_log, const char *format,...)
virtual Status GetFileSize(const std::string &fname, uint64_t *file_size)=0
virtual Status NewWritableFile(const std::string &fname, WritableFile **result)=0
virtual Status GetTestDirectory(std::string *path)=0
virtual Status NewRandomAccessFile(const std::string &fname, RandomAccessFile **result)=0
virtual Status CreateDir(const std::string &dirname)=0
Status DeleteDir(const std::string &d)
virtual void StartThread(void(*function)(void *arg), void *arg)=0
void Schedule(void(*f)(void *), void *a)
virtual Status GetTestDirectory(std::string *path)
Status RenameFile(const std::string &s, const std::string &t)
Status DeleteFile(const std::string &f)
virtual Status LockFile(const std::string &fname, FileLock **lock)=0
virtual Status RenameFile(const std::string &src, const std::string &target)=0
virtual bool FileExists(const std::string &fname)=0
virtual Status NewAppendableFile(const std::string &fname, WritableFile **result)
void StartThread(void(*f)(void *), void *a)
virtual Status NewLogger(const std::string &fname, Logger **result)
virtual void Schedule(void(*function)(void *arg), void *arg)=0
virtual Status NewSequentialFile(const std::string &fname, SequentialFile **result)=0
Status NewAppendableFile(const std::string &f, WritableFile **r)
Status NewSequentialFile(const std::string &f, SequentialFile **r)
virtual uint64_t NowMicros()=0
Status CreateDir(const std::string &d)
Status UnlockFile(FileLock *l)
Status GetChildren(const std::string &dir, std::vector< std::string > *r)
virtual Status DeleteFile(const std::string &fname)=0
virtual Status DeleteDir(const std::string &dirname)=0
virtual Status NewLogger(const std::string &fname, Logger **result)=0
Status NewRandomAccessFile(const std::string &f, RandomAccessFile **r)
virtual Status GetChildren(const std::string &dir, std::vector< std::string > *result)=0
void operator=(const Env &)
Status LockFile(const std::string &f, FileLock **l)
Status ReadFileToString(Env *env, const std::string &fname, std::string *data)