Index: third_party/leveldatabase/env_chromium_stdio.h |
diff --git a/third_party/leveldatabase/env_chromium_stdio.h b/third_party/leveldatabase/env_chromium_stdio.h |
new file mode 100644 |
index 0000000000000000000000000000000000000000..e60a1b8d53abb146d22f98821152164085d18797 |
--- /dev/null |
+++ b/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::PlatformFileError 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 |