Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(491)

Side by Side Diff: third_party/leveldatabase/env_chromium.h

Issue 168833003: Remove uses of PlatformFile from leveldb (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 6 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2013 The LevelDB Authors. All rights reserved. 1 // Copyright (c) 2013 The LevelDB Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. See the AUTHORS file for names of contributors. 3 // found in the LICENSE file. See the AUTHORS file for names of contributors.
4 4
5 #ifndef THIRD_PARTY_LEVELDATABASE_ENV_CHROMIUM_H_ 5 #ifndef THIRD_PARTY_LEVELDATABASE_ENV_CHROMIUM_H_
6 #define THIRD_PARTY_LEVELDATABASE_ENV_CHROMIUM_H_ 6 #define THIRD_PARTY_LEVELDATABASE_ENV_CHROMIUM_H_
7 7
8 #include <deque> 8 #include <deque>
9 #include <map> 9 #include <map>
10 #include <set> 10 #include <set>
11 11
12 #include "base/files/file.h"
12 #include "base/metrics/histogram.h" 13 #include "base/metrics/histogram.h"
13 #include "base/platform_file.h"
14 #include "leveldb/env.h" 14 #include "leveldb/env.h"
15 #include "port/port_chromium.h" 15 #include "port/port_chromium.h"
16 #include "util/mutexlock.h" 16 #include "util/mutexlock.h"
17 17
18 namespace leveldb_env { 18 namespace leveldb_env {
19 19
20 enum MethodID { 20 enum MethodID {
21 kSequentialFileRead, 21 kSequentialFileRead,
22 kSequentialFileSkip, 22 kSequentialFileSkip,
23 kRandomAccessFileRead, 23 kRandomAccessFileRead,
(...skipping 20 matching lines...) Expand all
44 44
45 const char* MethodIDToString(MethodID method); 45 const char* MethodIDToString(MethodID method);
46 46
47 leveldb::Status MakeIOError(leveldb::Slice filename, 47 leveldb::Status MakeIOError(leveldb::Slice filename,
48 const char* message, 48 const char* message,
49 MethodID method, 49 MethodID method,
50 int saved_errno); 50 int saved_errno);
51 leveldb::Status MakeIOError(leveldb::Slice filename, 51 leveldb::Status MakeIOError(leveldb::Slice filename,
52 const char* message, 52 const char* message,
53 MethodID method, 53 MethodID method,
54 base::PlatformFileError error); 54 base::File::Error error);
55 leveldb::Status MakeIOError(leveldb::Slice filename, 55 leveldb::Status MakeIOError(leveldb::Slice filename,
56 const char* message, 56 const char* message,
57 MethodID method); 57 MethodID method);
58 58
59 enum ErrorParsingResult { 59 enum ErrorParsingResult {
60 METHOD_ONLY, 60 METHOD_ONLY,
61 METHOD_AND_PFE, 61 METHOD_AND_PFE,
62 METHOD_AND_ERRNO, 62 METHOD_AND_ERRNO,
63 NONE, 63 NONE,
64 }; 64 };
65 65
66 ErrorParsingResult ParseMethodAndError(const char* string, 66 ErrorParsingResult ParseMethodAndError(const char* string,
67 MethodID* method, 67 MethodID* method,
68 int* error); 68 int* error);
69 int GetCorruptionCode(const leveldb::Status& status); 69 int GetCorruptionCode(const leveldb::Status& status);
70 int GetNumCorruptionCodes(); 70 int GetNumCorruptionCodes();
71 std::string GetCorruptionMessage(const leveldb::Status& status); 71 std::string GetCorruptionMessage(const leveldb::Status& status);
72 bool IndicatesDiskFull(const leveldb::Status& status); 72 bool IndicatesDiskFull(const leveldb::Status& status);
73 bool IsIOError(const leveldb::Status& status); 73 bool IsIOError(const leveldb::Status& status);
74 bool IsCorruption(const leveldb::Status& status); 74 bool IsCorruption(const leveldb::Status& status);
75 std::string FilePathToString(const base::FilePath& file_path); 75 std::string FilePathToString(const base::FilePath& file_path);
76 76
77 class UMALogger { 77 class UMALogger {
78 public: 78 public:
79 virtual void RecordErrorAt(MethodID method) const = 0; 79 virtual void RecordErrorAt(MethodID method) const = 0;
80 virtual void RecordOSError(MethodID method, int saved_errno) const = 0; 80 virtual void RecordOSError(MethodID method, int saved_errno) const = 0;
81 virtual void RecordOSError(MethodID method, 81 virtual void RecordOSError(MethodID method,
82 base::PlatformFileError error) const = 0; 82 base::File::Error error) const = 0;
83 virtual void RecordBackupResult(bool success) const = 0; 83 virtual void RecordBackupResult(bool success) const = 0;
84 }; 84 };
85 85
86 class RetrierProvider { 86 class RetrierProvider {
87 public: 87 public:
88 virtual int MaxRetryTimeMillis() const = 0; 88 virtual int MaxRetryTimeMillis() const = 0;
89 virtual base::HistogramBase* GetRetryTimeHistogram(MethodID method) const = 0; 89 virtual base::HistogramBase* GetRetryTimeHistogram(MethodID method) const = 0;
90 virtual base::HistogramBase* GetRecoveredFromErrorHistogram( 90 virtual base::HistogramBase* GetRecoveredFromErrorHistogram(
91 MethodID method) const = 0; 91 MethodID method) const = 0;
92 }; 92 };
93 93
94 class WriteTracker { 94 class WriteTracker {
95 public: 95 public:
96 virtual void DidCreateNewFile(const std::string& fname) = 0; 96 virtual void DidCreateNewFile(const std::string& fname) = 0;
97 virtual bool DoesDirNeedSync(const std::string& fname) = 0; 97 virtual bool DoesDirNeedSync(const std::string& fname) = 0;
98 virtual void DidSyncDir(const std::string& fname) = 0; 98 virtual void DidSyncDir(const std::string& fname) = 0;
99 }; 99 };
100 100
101 class ChromiumEnv : public leveldb::Env, 101 class ChromiumEnv : public leveldb::Env,
102 public UMALogger, 102 public UMALogger,
103 public RetrierProvider, 103 public RetrierProvider,
104 public WriteTracker { 104 public WriteTracker {
105 public: 105 public:
106 static bool MakeBackup(const std::string& fname); 106 static bool MakeBackup(const std::string& fname);
107 static base::FilePath CreateFilePath(const std::string& file_path); 107 static base::FilePath CreateFilePath(const std::string& file_path);
108 static const char* PlatformFileErrorString( 108 static const char* FileErrorString(::base::File::Error error);
109 const ::base::PlatformFileError& error);
110 static bool HasTableExtension(const base::FilePath& path); 109 static bool HasTableExtension(const base::FilePath& path);
111 virtual ~ChromiumEnv(); 110 virtual ~ChromiumEnv();
112 111
113 virtual bool FileExists(const std::string& fname); 112 virtual bool FileExists(const std::string& fname);
114 virtual leveldb::Status GetChildren(const std::string& dir, 113 virtual leveldb::Status GetChildren(const std::string& dir,
115 std::vector<std::string>* result); 114 std::vector<std::string>* result);
116 virtual leveldb::Status DeleteFile(const std::string& fname); 115 virtual leveldb::Status DeleteFile(const std::string& fname);
117 virtual leveldb::Status CreateDir(const std::string& name); 116 virtual leveldb::Status CreateDir(const std::string& name);
118 virtual leveldb::Status DeleteDir(const std::string& name); 117 virtual leveldb::Status DeleteDir(const std::string& name);
119 virtual leveldb::Status GetFileSize(const std::string& fname, uint64_t* size); 118 virtual leveldb::Status GetFileSize(const std::string& fname, uint64_t* size);
120 virtual leveldb::Status RenameFile(const std::string& src, 119 virtual leveldb::Status RenameFile(const std::string& src,
121 const std::string& dst); 120 const std::string& dst);
122 virtual leveldb::Status LockFile(const std::string& fname, 121 virtual leveldb::Status LockFile(const std::string& fname,
123 leveldb::FileLock** lock); 122 leveldb::FileLock** lock);
124 virtual leveldb::Status UnlockFile(leveldb::FileLock* lock); 123 virtual leveldb::Status UnlockFile(leveldb::FileLock* lock);
125 virtual void Schedule(void (*function)(void*), void* arg); 124 virtual void Schedule(void (*function)(void*), void* arg);
126 virtual void StartThread(void (*function)(void* arg), void* arg); 125 virtual void StartThread(void (*function)(void* arg), void* arg);
127 virtual leveldb::Status GetTestDirectory(std::string* path); 126 virtual leveldb::Status GetTestDirectory(std::string* path);
128 virtual uint64_t NowMicros(); 127 virtual uint64_t NowMicros();
129 virtual void SleepForMicroseconds(int micros); 128 virtual void SleepForMicroseconds(int micros);
130 129
131 protected: 130 protected:
132 ChromiumEnv(); 131 ChromiumEnv();
133 132
134 virtual void DidCreateNewFile(const std::string& fname); 133 virtual void DidCreateNewFile(const std::string& fname);
135 virtual bool DoesDirNeedSync(const std::string& fname); 134 virtual bool DoesDirNeedSync(const std::string& fname);
136 virtual void DidSyncDir(const std::string& fname); 135 virtual void DidSyncDir(const std::string& fname);
137 virtual base::PlatformFileError GetDirectoryEntries( 136 virtual base::File::Error GetDirectoryEntries(
138 const base::FilePath& dir_param, 137 const base::FilePath& dir_param,
139 std::vector<base::FilePath>* result) const = 0; 138 std::vector<base::FilePath>* result) const = 0;
140 virtual void RecordErrorAt(MethodID method) const; 139 virtual void RecordErrorAt(MethodID method) const;
141 virtual void RecordOSError(MethodID method, int saved_errno) const; 140 virtual void RecordOSError(MethodID method, int saved_errno) const;
142 virtual void RecordOSError(MethodID method, 141 virtual void RecordOSError(MethodID method,
143 base::PlatformFileError error) const; 142 base::File::Error error) const;
144 base::HistogramBase* GetMaxFDHistogram(const std::string& type) const; 143 base::HistogramBase* GetMaxFDHistogram(const std::string& type) const;
145 base::HistogramBase* GetOSErrorHistogram(MethodID method, int limit) const; 144 base::HistogramBase* GetOSErrorHistogram(MethodID method, int limit) const;
146 145
147 std::string name_; 146 std::string name_;
148 bool make_backup_; 147 bool make_backup_;
149 148
150 private: 149 private:
151 // File locks may not be exclusive within a process (e.g. on POSIX). Track 150 // File locks may not be exclusive within a process (e.g. on POSIX). Track
152 // locks held by the ChromiumEnv to prevent access within the process. 151 // locks held by the ChromiumEnv to prevent access within the process.
153 class LockTable { 152 class LockTable {
(...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after
201 void (*function)(void*); 200 void (*function)(void*);
202 }; 201 };
203 typedef std::deque<BGItem> BGQueue; 202 typedef std::deque<BGItem> BGQueue;
204 BGQueue queue_; 203 BGQueue queue_;
205 LockTable locks_; 204 LockTable locks_;
206 }; 205 };
207 206
208 } // namespace leveldb_env 207 } // namespace leveldb_env
209 208
210 #endif 209 #endif
OLDNEW
« no previous file with comments | « content/browser/indexed_db/leveldb/leveldb_database.cc ('k') | third_party/leveldatabase/env_chromium.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698