diff options
Diffstat (limited to 'chromium/third_party/leveldatabase/env_chromium_stdio.h')
-rw-r--r-- | chromium/third_party/leveldatabase/env_chromium_stdio.h | 73 |
1 files changed, 73 insertions, 0 deletions
diff --git a/chromium/third_party/leveldatabase/env_chromium_stdio.h b/chromium/third_party/leveldatabase/env_chromium_stdio.h new file mode 100644 index 00000000000..3fb41421451 --- /dev/null +++ b/chromium/third_party/leveldatabase/env_chromium_stdio.h @@ -0,0 +1,73 @@ +// Copyright (c) 2013 The LevelDB Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. See the AUTHORS file for names of contributors. + +#ifndef THIRD_PARTY_LEVELDATABASE_ENV_CHROMIUM_STDIO_H_ +#define THIRD_PARTY_LEVELDATABASE_ENV_CHROMIUM_STDIO_H_ + +#include "env_chromium.h" + +namespace leveldb_env { + +class ChromiumWritableFile : public leveldb::WritableFile { + public: + ChromiumWritableFile(const std::string& fname, + FILE* f, + const UMALogger* uma_logger, + WriteTracker* tracker, + bool make_backup); + virtual ~ChromiumWritableFile(); + virtual leveldb::Status Append(const leveldb::Slice& data); + virtual leveldb::Status Close(); + virtual leveldb::Status Flush(); + virtual leveldb::Status Sync(); + + private: + enum Type { + kManifest, + kTable, + kOther + }; + leveldb::Status SyncParent(); + + std::string filename_; + FILE* file_; + const UMALogger* uma_logger_; + WriteTracker* tracker_; + Type file_type_; + std::string parent_dir_; + bool make_backup_; +}; + +class ChromiumEnvStdio : public ChromiumEnv { + public: + ChromiumEnvStdio(); + virtual ~ChromiumEnvStdio(); + + virtual leveldb::Status NewSequentialFile(const std::string& fname, + leveldb::SequentialFile** result); + virtual leveldb::Status NewRandomAccessFile( + const std::string& fname, + leveldb::RandomAccessFile** result); + virtual leveldb::Status NewWritableFile(const std::string& fname, + leveldb::WritableFile** result); + virtual leveldb::Status NewLogger(const std::string& fname, + leveldb::Logger** result); + + protected: + virtual base::File::Error GetDirectoryEntries( + const base::FilePath& dir_param, + std::vector<base::FilePath>* result) const; + + private: + // BGThread() is the body of the background thread + void BGThread(); + static void BGThreadWrapper(void* arg) { + reinterpret_cast<ChromiumEnvStdio*>(arg)->BGThread(); + } + void RecordOpenFilesLimit(const std::string& type); +}; + +} // namespace leveldb_env + +#endif |