|
| | PosixEnv () |
| |
| virtual | ~PosixEnv () |
| |
| virtual Status | NewSequentialFile (const std::string &fname, SequentialFile **result) |
| |
| virtual Status | NewRandomAccessFile (const std::string &fname, RandomAccessFile **result) |
| |
| virtual Status | NewWritableFile (const std::string &fname, WritableFile **result) |
| |
| virtual Status | NewAppendableFile (const std::string &fname, WritableFile **result) |
| |
| virtual bool | FileExists (const std::string &fname) |
| |
| virtual Status | GetChildren (const std::string &dir, std::vector< std::string > *result) |
| |
| virtual Status | DeleteFile (const std::string &fname) |
| |
| virtual Status | CreateDir (const std::string &name) |
| |
| virtual Status | DeleteDir (const std::string &name) |
| |
| virtual Status | GetFileSize (const std::string &fname, uint64_t *size) |
| |
| virtual Status | RenameFile (const std::string &src, const std::string &target) |
| |
| virtual Status | LockFile (const std::string &fname, FileLock **lock) |
| |
| virtual Status | UnlockFile (FileLock *lock) |
| |
| virtual void | Schedule (void(*function)(void *), void *arg) |
| |
| virtual void | StartThread (void(*function)(void *arg), void *arg) |
| |
| virtual Status | GetTestDirectory (std::string *result) |
| |
| virtual Status | NewLogger (const std::string &fname, Logger **result) |
| |
| virtual uint64_t | NowMicros () |
| |
| virtual void | SleepForMicroseconds (int micros) |
| |
| | Env () |
| |
| virtual | ~Env () |
| |
| virtual void | Schedule (void(*function)(void *arg), void *arg)=0 |
| |
Definition at line 291 of file env_posix.cc.
§ BGQueue
§ PosixEnv()
| leveldb::anonymous_namespace{env_posix.cc}::PosixEnv::PosixEnv |
( |
| ) |
|
Definition at line 538 of file env_posix.cc.
void PthreadCall(const char *label, int result)
§ ~PosixEnv()
| virtual leveldb::anonymous_namespace{env_posix.cc}::PosixEnv::~PosixEnv |
( |
| ) |
|
|
inlinevirtual |
Definition at line 294 of file env_posix.cc.
295 char msg[] =
"Destroying Env::Default()\n";
296 fwrite(msg, 1,
sizeof(msg), stderr);
§ BGThread()
| void leveldb::anonymous_namespace{env_posix.cc}::PosixEnv::BGThread |
( |
| ) |
|
|
private |
Definition at line 568 of file env_posix.cc.
576 void (*
function)(
void*) =
queue_.front().function;
577 void* arg =
queue_.front().arg;
void PthreadCall(const char *label, int result)
§ BGThreadWrapper()
| static void* leveldb::anonymous_namespace{env_posix.cc}::PosixEnv::BGThreadWrapper |
( |
void * |
arg | ) |
|
|
inlinestaticprivate |
§ CreateDir()
| virtual Status leveldb::anonymous_namespace{env_posix.cc}::PosixEnv::CreateDir |
( |
const std::string & |
name | ) |
|
|
inlinevirtual |
Implements leveldb::Env.
Definition at line 393 of file env_posix.cc.
395 if (mkdir(name.c_str(), 0755) != 0) {
static Status IOError(const std::string &context, int err_number)
§ DeleteDir()
| virtual Status leveldb::anonymous_namespace{env_posix.cc}::PosixEnv::DeleteDir |
( |
const std::string & |
name | ) |
|
|
inlinevirtual |
Implements leveldb::Env.
Definition at line 401 of file env_posix.cc.
403 if (rmdir(name.c_str()) != 0) {
static Status IOError(const std::string &context, int err_number)
§ DeleteFile()
| virtual Status leveldb::anonymous_namespace{env_posix.cc}::PosixEnv::DeleteFile |
( |
const std::string & |
fname | ) |
|
|
inlinevirtual |
Implements leveldb::Env.
Definition at line 385 of file env_posix.cc.
387 if (unlink(fname.c_str()) != 0) {
388 result =
IOError(fname, errno);
static Status IOError(const std::string &context, int err_number)
§ FileExists()
| virtual bool leveldb::anonymous_namespace{env_posix.cc}::PosixEnv::FileExists |
( |
const std::string & |
fname | ) |
|
|
inlinevirtual |
§ GetChildren()
| virtual Status leveldb::anonymous_namespace{env_posix.cc}::PosixEnv::GetChildren |
( |
const std::string & |
dir, |
|
|
std::vector< std::string > * |
result |
|
) |
| |
|
inlinevirtual |
Implements leveldb::Env.
Definition at line 370 of file env_posix.cc.
373 DIR* d = opendir(dir.c_str());
377 struct dirent* entry;
378 while ((entry = readdir(d)) != NULL) {
379 result->push_back(entry->d_name);
static Status IOError(const std::string &context, int err_number)
§ GetFileSize()
| virtual Status leveldb::anonymous_namespace{env_posix.cc}::PosixEnv::GetFileSize |
( |
const std::string & |
fname, |
|
|
uint64_t * |
size |
|
) |
| |
|
inlinevirtual |
Implements leveldb::Env.
Definition at line 409 of file env_posix.cc.
412 if (stat(fname.c_str(), &sbuf) != 0) {
416 *size = sbuf.st_size;
static Status IOError(const std::string &context, int err_number)
§ GetTestDirectory()
| virtual Status leveldb::anonymous_namespace{env_posix.cc}::PosixEnv::GetTestDirectory |
( |
std::string * |
result | ) |
|
|
inlinevirtual |
Implements leveldb::Env.
Definition at line 467 of file env_posix.cc.
468 const char* env = getenv(
"TEST_TMPDIR");
469 if (env && env[0] !=
'\0') {
473 snprintf(buf,
sizeof(buf),
"/tmp/leveldbtest-%d",
int(geteuid()));
virtual Status CreateDir(const std::string &name)
§ gettid()
| static uint64_t leveldb::anonymous_namespace{env_posix.cc}::PosixEnv::gettid |
( |
| ) |
|
|
inlinestatic |
Definition at line 481 of file env_posix.cc.
482 pthread_t tid = pthread_self();
483 uint64_t thread_id = 0;
484 memcpy(&thread_id, &tid, std::min(
sizeof(thread_id),
sizeof(tid)));
§ LockFile()
| virtual Status leveldb::anonymous_namespace{env_posix.cc}::PosixEnv::LockFile |
( |
const std::string & |
fname, |
|
|
FileLock ** |
lock |
|
) |
| |
|
inlinevirtual |
Implements leveldb::Env.
Definition at line 429 of file env_posix.cc.
432 int fd = open(fname.c_str(), O_RDWR | O_CREAT, 0644);
434 result =
IOError(fname, errno);
439 result =
IOError(
"lock " + fname, errno);
443 PosixFileLock* my_lock =
new PosixFileLock;
445 my_lock->name_ = fname;
static int LockOrUnlock(int fd, bool lock)
void Remove(const std::string &fname)
bool Insert(const std::string &fname)
static Status IOError(const std::string &context, int err_number)
static Status IOError(const Slice &msg, const Slice &msg2=Slice())
§ NewAppendableFile()
| virtual Status leveldb::anonymous_namespace{env_posix.cc}::PosixEnv::NewAppendableFile |
( |
const std::string & |
fname, |
|
|
WritableFile ** |
result |
|
) |
| |
|
inlinevirtual |
Reimplemented from leveldb::Env.
Definition at line 353 of file env_posix.cc.
356 FILE* f = fopen(fname.c_str(),
"a");
361 *result =
new PosixWritableFile(fname, f);
static Status IOError(const std::string &context, int err_number)
§ NewLogger()
| virtual Status leveldb::anonymous_namespace{env_posix.cc}::PosixEnv::NewLogger |
( |
const std::string & |
fname, |
|
|
Logger ** |
result |
|
) |
| |
|
inlinevirtual |
Implements leveldb::Env.
Definition at line 488 of file env_posix.cc.
489 FILE* f = fopen(fname.c_str(),
"w");
static Status IOError(const std::string &context, int err_number)
§ NewRandomAccessFile()
| virtual Status leveldb::anonymous_namespace{env_posix.cc}::PosixEnv::NewRandomAccessFile |
( |
const std::string & |
fname, |
|
|
RandomAccessFile ** |
result |
|
) |
| |
|
inlinevirtual |
Implements leveldb::Env.
Definition at line 312 of file env_posix.cc.
316 int fd = open(fname.c_str(), O_RDONLY);
323 void* base = mmap(NULL, size, PROT_READ, MAP_SHARED, fd, 0);
324 if (base != MAP_FAILED) {
325 *result =
new PosixMmapReadableFile(fname, base, size, &
mmap_limit_);
335 *result =
new PosixRandomAccessFile(fname, fd);
static Status IOError(const std::string &context, int err_number)
virtual Status GetFileSize(const std::string &fname, uint64_t *size)
§ NewSequentialFile()
| virtual Status leveldb::anonymous_namespace{env_posix.cc}::PosixEnv::NewSequentialFile |
( |
const std::string & |
fname, |
|
|
SequentialFile ** |
result |
|
) |
| |
|
inlinevirtual |
Implements leveldb::Env.
Definition at line 300 of file env_posix.cc.
302 FILE* f = fopen(fname.c_str(),
"r");
307 *result =
new PosixSequentialFile(fname, f);
static Status IOError(const std::string &context, int err_number)
§ NewWritableFile()
| virtual Status leveldb::anonymous_namespace{env_posix.cc}::PosixEnv::NewWritableFile |
( |
const std::string & |
fname, |
|
|
WritableFile ** |
result |
|
) |
| |
|
inlinevirtual |
Implements leveldb::Env.
Definition at line 340 of file env_posix.cc.
343 FILE* f = fopen(fname.c_str(),
"w");
348 *result =
new PosixWritableFile(fname, f);
static Status IOError(const std::string &context, int err_number)
§ NowMicros()
| virtual uint64_t leveldb::anonymous_namespace{env_posix.cc}::PosixEnv::NowMicros |
( |
| ) |
|
|
inlinevirtual |
Implements leveldb::Env.
Definition at line 499 of file env_posix.cc.
501 gettimeofday(&tv, NULL);
502 return static_cast<uint64_t
>(tv.tv_sec) * 1000000 + tv.tv_usec;
§ PthreadCall()
| void leveldb::anonymous_namespace{env_posix.cc}::PosixEnv::PthreadCall |
( |
const char * |
label, |
|
|
int |
result |
|
) |
| |
|
inlineprivate |
Definition at line 510 of file env_posix.cc.
512 fprintf(stderr,
"pthread %s: %s\n", label, strerror(result));
§ RenameFile()
| virtual Status leveldb::anonymous_namespace{env_posix.cc}::PosixEnv::RenameFile |
( |
const std::string & |
src, |
|
|
const std::string & |
target |
|
) |
| |
|
inlinevirtual |
Implements leveldb::Env.
Definition at line 421 of file env_posix.cc.
423 if (rename(src.c_str(), target.c_str()) != 0) {
static Status IOError(const std::string &context, int err_number)
§ Schedule()
| void leveldb::anonymous_namespace{env_posix.cc}::PosixEnv::Schedule |
( |
void(*)(void *) |
function, |
|
|
void * |
arg |
|
) |
| |
|
virtual |
Definition at line 543 of file env_posix.cc.
561 queue_.push_back(BGItem());
562 queue_.back().function =
function;
void PthreadCall(const char *label, int result)
static void * BGThreadWrapper(void *arg)
§ SleepForMicroseconds()
| virtual void leveldb::anonymous_namespace{env_posix.cc}::PosixEnv::SleepForMicroseconds |
( |
int |
micros | ) |
|
|
inlinevirtual |
§ StartThread()
| void leveldb::anonymous_namespace{env_posix.cc}::PosixEnv::StartThread |
( |
void(*)(void *arg) |
function, |
|
|
void * |
arg |
|
) |
| |
|
virtual |
Implements leveldb::Env.
Definition at line 598 of file env_posix.cc.
600 StartThreadState* state =
new StartThreadState;
601 state->user_function =
function;
void PthreadCall(const char *label, int result)
static void * StartThreadWrapper(void *arg)
§ UnlockFile()
| virtual Status leveldb::anonymous_namespace{env_posix.cc}::PosixEnv::UnlockFile |
( |
FileLock * |
lock | ) |
|
|
inlinevirtual |
Implements leveldb::Env.
Definition at line 451 of file env_posix.cc.
452 PosixFileLock* my_lock =
reinterpret_cast<PosixFileLock*
>(lock);
455 result =
IOError(
"unlock", errno);
static int LockOrUnlock(int fd, bool lock)
void Remove(const std::string &fname)
static Status IOError(const std::string &context, int err_number)
§ bgsignal_
| pthread_cond_t leveldb::anonymous_namespace{env_posix.cc}::PosixEnv::bgsignal_ |
|
private |
§ bgthread_
| pthread_t leveldb::anonymous_namespace{env_posix.cc}::PosixEnv::bgthread_ |
|
private |
§ locks_
| PosixLockTable leveldb::anonymous_namespace{env_posix.cc}::PosixEnv::locks_ |
|
private |
§ mmap_limit_
| MmapLimiter leveldb::anonymous_namespace{env_posix.cc}::PosixEnv::mmap_limit_ |
|
private |
§ mu_
| pthread_mutex_t leveldb::anonymous_namespace{env_posix.cc}::PosixEnv::mu_ |
|
private |
§ queue_
| BGQueue leveldb::anonymous_namespace{env_posix.cc}::PosixEnv::queue_ |
|
private |
§ started_bgthread_
| bool leveldb::anonymous_namespace{env_posix.cc}::PosixEnv::started_bgthread_ |
|
private |
The documentation for this class was generated from the following file: