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

Side by Side Diff: components/leveldb/env_mojo.cc

Issue 1962503002: Add mojom module suffix in .mojom files for components/filesystem. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 7 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
« no previous file with comments | « components/filesystem/util.cc ('k') | components/leveldb/leveldb_mojo_proxy.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2016 The Chromium Authors. All rights reserved. 1 // Copyright 2016 The Chromium 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. 3 // found in the LICENSE file.
4 4
5 #include "components/leveldb/env_mojo.h" 5 #include "components/leveldb/env_mojo.h"
6 6
7 #include <errno.h> 7 #include <errno.h>
8 8
9 #include <memory> 9 #include <memory>
10 10
11 #include "base/trace_event/trace_event.h" 11 #include "base/trace_event/trace_event.h"
12 #include "third_party/leveldatabase/chromium_logger.h" 12 #include "third_party/leveldatabase/chromium_logger.h"
13 #include "third_party/leveldatabase/src/include/leveldb/status.h" 13 #include "third_party/leveldatabase/src/include/leveldb/status.h"
14 14
15 namespace leveldb { 15 namespace leveldb {
16 16
17 namespace { 17 namespace {
18 18
19 const base::FilePath::CharType table_extension[] = FILE_PATH_LITERAL(".ldb"); 19 const base::FilePath::CharType table_extension[] = FILE_PATH_LITERAL(".ldb");
20 20
21 base::File::Error LastFileError() { 21 base::File::Error LastFileError() {
22 #if defined(OS_WIN) 22 #if defined(OS_WIN)
23 return base::File::OSErrorToFileError(GetLastError()); 23 return base::File::OSErrorToFileError(GetLastError());
24 #else 24 #else
25 return base::File::OSErrorToFileError(errno); 25 return base::File::OSErrorToFileError(errno);
26 #endif 26 #endif
27 } 27 }
28 28
29 Status FilesystemErrorToStatus(filesystem::FileError error, 29 Status FilesystemErrorToStatus(filesystem::mojom::FileError error,
30 const std::string& filename, 30 const std::string& filename,
31 leveldb_env::MethodID method) { 31 leveldb_env::MethodID method) {
32 if (error == filesystem::FileError::OK) 32 if (error == filesystem::mojom::FileError::OK)
33 return Status::OK(); 33 return Status::OK();
34 34
35 std::string err_str = 35 std::string err_str =
36 base::File::ErrorToString(base::File::Error(static_cast<int>(error))); 36 base::File::ErrorToString(base::File::Error(static_cast<int>(error)));
37 37
38 char buf[512]; 38 char buf[512];
39 snprintf(buf, sizeof(buf), "%s (MojoFSError: %d::%s)", err_str.c_str(), 39 snprintf(buf, sizeof(buf), "%s (MojoFSError: %d::%s)", err_str.c_str(),
40 method, MethodIDToString(method)); 40 method, MethodIDToString(method));
41 return Status::IOError(filename, buf); 41 return Status::IOError(filename, buf);
42 } 42 }
(...skipping 143 matching lines...) Expand 10 before | Expand all | Expand 10 after
186 if (file_type_ == kManifest) 186 if (file_type_ == kManifest)
187 return SyncParent(); 187 return SyncParent();
188 188
189 return Status::OK(); 189 return Status::OK();
190 } 190 }
191 191
192 private: 192 private:
193 enum Type { kManifest, kTable, kOther }; 193 enum Type { kManifest, kTable, kOther };
194 194
195 leveldb::Status SyncParent() { 195 leveldb::Status SyncParent() {
196 filesystem::FileError error = thread_->SyncDirectory(dir_, parent_dir_); 196 filesystem::mojom::FileError error =
197 return error == filesystem::FileError::OK 197 thread_->SyncDirectory(dir_, parent_dir_);
198 return error == filesystem::mojom::FileError::OK
198 ? Status::OK() 199 ? Status::OK()
199 : Status::IOError(filename_, 200 : Status::IOError(filename_,
200 base::File::ErrorToString(base::File::Error( 201 base::File::ErrorToString(base::File::Error(
201 static_cast<int>(error)))); 202 static_cast<int>(error))));
202 } 203 }
203 204
204 std::string filename_; 205 std::string filename_;
205 base::File file_; 206 base::File file_;
206 Type file_type_; 207 Type file_type_;
207 LevelDBMojoProxy::OpaqueDir* dir_; 208 LevelDBMojoProxy::OpaqueDir* dir_;
(...skipping 11 matching lines...) Expand all
219 220
220 MojoEnv::~MojoEnv() { 221 MojoEnv::~MojoEnv() {
221 thread_->UnregisterDirectory(dir_); 222 thread_->UnregisterDirectory(dir_);
222 } 223 }
223 224
224 Status MojoEnv::NewSequentialFile(const std::string& fname, 225 Status MojoEnv::NewSequentialFile(const std::string& fname,
225 SequentialFile** result) { 226 SequentialFile** result) {
226 TRACE_EVENT1("leveldb", "MojoEnv::NewSequentialFile", "fname", fname); 227 TRACE_EVENT1("leveldb", "MojoEnv::NewSequentialFile", "fname", fname);
227 base::File f = thread_->OpenFileHandle( 228 base::File f = thread_->OpenFileHandle(
228 dir_, mojo::String::From(fname), 229 dir_, mojo::String::From(fname),
229 filesystem::kFlagOpen | filesystem::kFlagRead); 230 filesystem::mojom::kFlagOpen | filesystem::mojom::kFlagRead);
230 if (!f.IsValid()) { 231 if (!f.IsValid()) {
231 *result = nullptr; 232 *result = nullptr;
232 return MakeIOError(fname, "Unable to create sequential file", 233 return MakeIOError(fname, "Unable to create sequential file",
233 leveldb_env::kNewSequentialFile, f.error_details()); 234 leveldb_env::kNewSequentialFile, f.error_details());
234 } 235 }
235 236
236 *result = new MojoSequentialFile(fname, std::move(f)); 237 *result = new MojoSequentialFile(fname, std::move(f));
237 return Status::OK(); 238 return Status::OK();
238 } 239 }
239 240
240 Status MojoEnv::NewRandomAccessFile(const std::string& fname, 241 Status MojoEnv::NewRandomAccessFile(const std::string& fname,
241 RandomAccessFile** result) { 242 RandomAccessFile** result) {
242 TRACE_EVENT1("leveldb", "MojoEnv::NewRandomAccessFile", "fname", fname); 243 TRACE_EVENT1("leveldb", "MojoEnv::NewRandomAccessFile", "fname", fname);
243 base::File f = thread_->OpenFileHandle( 244 base::File f = thread_->OpenFileHandle(
244 dir_, mojo::String::From(fname), 245 dir_, mojo::String::From(fname),
245 filesystem::kFlagRead | filesystem::kFlagOpen); 246 filesystem::mojom::kFlagRead | filesystem::mojom::kFlagOpen);
246 if (!f.IsValid()) { 247 if (!f.IsValid()) {
247 *result = nullptr; 248 *result = nullptr;
248 base::File::Error error_code = f.error_details(); 249 base::File::Error error_code = f.error_details();
249 return MakeIOError(fname, FileErrorString(error_code), 250 return MakeIOError(fname, FileErrorString(error_code),
250 leveldb_env::kNewRandomAccessFile, error_code); 251 leveldb_env::kNewRandomAccessFile, error_code);
251 } 252 }
252 253
253 *result = new MojoRandomAccessFile(fname, std::move(f)); 254 *result = new MojoRandomAccessFile(fname, std::move(f));
254 return Status::OK(); 255 return Status::OK();
255 } 256 }
256 257
257 Status MojoEnv::NewWritableFile(const std::string& fname, 258 Status MojoEnv::NewWritableFile(const std::string& fname,
258 WritableFile** result) { 259 WritableFile** result) {
259 TRACE_EVENT1("leveldb", "MojoEnv::NewWritableFile", "fname", fname); 260 TRACE_EVENT1("leveldb", "MojoEnv::NewWritableFile", "fname", fname);
260 base::File f = thread_->OpenFileHandle( 261 base::File f = thread_->OpenFileHandle(
261 dir_, mojo::String::From(fname), 262 dir_, mojo::String::From(fname),
262 filesystem::kCreateAlways | filesystem::kFlagWrite); 263 filesystem::mojom::kCreateAlways | filesystem::mojom::kFlagWrite);
263 if (!f.IsValid()) { 264 if (!f.IsValid()) {
264 *result = nullptr; 265 *result = nullptr;
265 return MakeIOError(fname, "Unable to create writable file", 266 return MakeIOError(fname, "Unable to create writable file",
266 leveldb_env::kNewWritableFile, f.error_details()); 267 leveldb_env::kNewWritableFile, f.error_details());
267 } 268 }
268 269
269 *result = new MojoWritableFile(dir_, fname, std::move(f), thread_); 270 *result = new MojoWritableFile(dir_, fname, std::move(f), thread_);
270 return Status::OK(); 271 return Status::OK();
271 } 272 }
272 273
273 Status MojoEnv::NewAppendableFile(const std::string& fname, 274 Status MojoEnv::NewAppendableFile(const std::string& fname,
274 WritableFile** result) { 275 WritableFile** result) {
275 TRACE_EVENT1("leveldb", "MojoEnv::NewAppendableFile", "fname", fname); 276 TRACE_EVENT1("leveldb", "MojoEnv::NewAppendableFile", "fname", fname);
276 base::File f = thread_->OpenFileHandle( 277 base::File f = thread_->OpenFileHandle(
277 dir_, mojo::String::From(fname), 278 dir_, mojo::String::From(fname),
278 filesystem::kFlagOpenAlways | filesystem::kFlagAppend); 279 filesystem::mojom::kFlagOpenAlways | filesystem::mojom::kFlagAppend);
279 if (!f.IsValid()) { 280 if (!f.IsValid()) {
280 *result = nullptr; 281 *result = nullptr;
281 return MakeIOError(fname, "Unable to create appendable file", 282 return MakeIOError(fname, "Unable to create appendable file",
282 leveldb_env::kNewAppendableFile, f.error_details()); 283 leveldb_env::kNewAppendableFile, f.error_details());
283 } 284 }
284 285
285 *result = new MojoWritableFile(dir_, fname, std::move(f), thread_); 286 *result = new MojoWritableFile(dir_, fname, std::move(f), thread_);
286 return Status::OK(); 287 return Status::OK();
287 } 288 }
288 289
(...skipping 17 matching lines...) Expand all
306 307
307 Status MojoEnv::CreateDir(const std::string& dirname) { 308 Status MojoEnv::CreateDir(const std::string& dirname) {
308 TRACE_EVENT1("leveldb", "MojoEnv::CreateDir", "dirname", dirname); 309 TRACE_EVENT1("leveldb", "MojoEnv::CreateDir", "dirname", dirname);
309 return FilesystemErrorToStatus(thread_->CreateDir(dir_, dirname), dirname, 310 return FilesystemErrorToStatus(thread_->CreateDir(dir_, dirname), dirname,
310 leveldb_env::kCreateDir); 311 leveldb_env::kCreateDir);
311 } 312 }
312 313
313 Status MojoEnv::DeleteDir(const std::string& dirname) { 314 Status MojoEnv::DeleteDir(const std::string& dirname) {
314 TRACE_EVENT1("leveldb", "MojoEnv::DeleteDir", "dirname", dirname); 315 TRACE_EVENT1("leveldb", "MojoEnv::DeleteDir", "dirname", dirname);
315 return FilesystemErrorToStatus( 316 return FilesystemErrorToStatus(
316 thread_->Delete(dir_, dirname, filesystem::kDeleteFlagRecursive), dirname, 317 thread_->Delete(dir_, dirname, filesystem::mojom::kDeleteFlagRecursive),
317 leveldb_env::kDeleteDir); 318 dirname, leveldb_env::kDeleteDir);
318 } 319 }
319 320
320 Status MojoEnv::GetFileSize(const std::string& fname, uint64_t* file_size) { 321 Status MojoEnv::GetFileSize(const std::string& fname, uint64_t* file_size) {
321 TRACE_EVENT1("leveldb", "MojoEnv::GetFileSize", "fname", fname); 322 TRACE_EVENT1("leveldb", "MojoEnv::GetFileSize", "fname", fname);
322 return FilesystemErrorToStatus(thread_->GetFileSize(dir_, fname, file_size), 323 return FilesystemErrorToStatus(thread_->GetFileSize(dir_, fname, file_size),
323 fname, 324 fname,
324 leveldb_env::kGetFileSize); 325 leveldb_env::kGetFileSize);
325 } 326 }
326 327
327 Status MojoEnv::RenameFile(const std::string& src, const std::string& target) { 328 Status MojoEnv::RenameFile(const std::string& src, const std::string& target) {
328 TRACE_EVENT2("leveldb", "MojoEnv::RenameFile", "src", src, "target", target); 329 TRACE_EVENT2("leveldb", "MojoEnv::RenameFile", "src", src, "target", target);
329 return FilesystemErrorToStatus(thread_->RenameFile(dir_, src, target), src, 330 return FilesystemErrorToStatus(thread_->RenameFile(dir_, src, target), src,
330 leveldb_env::kRenameFile); 331 leveldb_env::kRenameFile);
331 } 332 }
332 333
333 Status MojoEnv::LockFile(const std::string& fname, FileLock** lock) { 334 Status MojoEnv::LockFile(const std::string& fname, FileLock** lock) {
334 TRACE_EVENT1("leveldb", "MojoEnv::LockFile", "fname", fname); 335 TRACE_EVENT1("leveldb", "MojoEnv::LockFile", "fname", fname);
335 336
336 std::pair<filesystem::FileError, LevelDBMojoProxy::OpaqueLock*> p = 337 std::pair<filesystem::mojom::FileError, LevelDBMojoProxy::OpaqueLock*> p =
337 thread_->LockFile(dir_, mojo::String::From(fname)); 338 thread_->LockFile(dir_, mojo::String::From(fname));
338 339
339 if (p.second) 340 if (p.second)
340 *lock = new MojoFileLock(p.second, fname); 341 *lock = new MojoFileLock(p.second, fname);
341 342
342 return FilesystemErrorToStatus(p.first, fname, leveldb_env::kLockFile); 343 return FilesystemErrorToStatus(p.first, fname, leveldb_env::kLockFile);
343 } 344 }
344 345
345 Status MojoEnv::UnlockFile(FileLock* lock) { 346 Status MojoEnv::UnlockFile(FileLock* lock) {
346 MojoFileLock* my_lock = reinterpret_cast<MojoFileLock*>(lock); 347 MojoFileLock* my_lock = reinterpret_cast<MojoFileLock*>(lock);
347 348
348 std::string fname = my_lock ? my_lock->name() : "(invalid)"; 349 std::string fname = my_lock ? my_lock->name() : "(invalid)";
349 TRACE_EVENT1("leveldb", "MojoEnv::UnlockFile", "fname", fname); 350 TRACE_EVENT1("leveldb", "MojoEnv::UnlockFile", "fname", fname);
350 351
351 filesystem::FileError err = thread_->UnlockFile(my_lock->TakeLock()); 352 filesystem::mojom::FileError err = thread_->UnlockFile(my_lock->TakeLock());
352 delete my_lock; 353 delete my_lock;
353 return FilesystemErrorToStatus(err, fname, leveldb_env::kUnlockFile); 354 return FilesystemErrorToStatus(err, fname, leveldb_env::kUnlockFile);
354 } 355 }
355 356
356 Status MojoEnv::GetTestDirectory(std::string* path) { 357 Status MojoEnv::GetTestDirectory(std::string* path) {
357 // TODO(erg): This method is actually only used from the test harness in 358 // TODO(erg): This method is actually only used from the test harness in
358 // leveldb. And when we go and port that test stuff to a mojo apptest, we 359 // leveldb. And when we go and port that test stuff to a mojo apptest, we
359 // probably won't use it since the mojo filesystem actually handles temporary 360 // probably won't use it since the mojo filesystem actually handles temporary
360 // filesystems just fine. 361 // filesystems just fine.
361 NOTREACHED(); 362 NOTREACHED();
362 return Status::OK(); 363 return Status::OK();
363 } 364 }
364 365
365 Status MojoEnv::NewLogger(const std::string& fname, Logger** result) { 366 Status MojoEnv::NewLogger(const std::string& fname, Logger** result) {
366 TRACE_EVENT1("leveldb", "MojoEnv::NewLogger", "fname", fname); 367 TRACE_EVENT1("leveldb", "MojoEnv::NewLogger", "fname", fname);
367 std::unique_ptr<base::File> f(new base::File(thread_->OpenFileHandle( 368 std::unique_ptr<base::File> f(new base::File(thread_->OpenFileHandle(
368 dir_, mojo::String::From(fname), 369 dir_, mojo::String::From(fname),
369 filesystem::kCreateAlways | filesystem::kFlagWrite))); 370 filesystem::mojom::kCreateAlways | filesystem::mojom::kFlagWrite)));
370 if (!f->IsValid()) { 371 if (!f->IsValid()) {
371 *result = NULL; 372 *result = NULL;
372 return MakeIOError(fname, "Unable to create log file", 373 return MakeIOError(fname, "Unable to create log file",
373 leveldb_env::kNewLogger, f->error_details()); 374 leveldb_env::kNewLogger, f->error_details());
374 } else { 375 } else {
375 *result = new leveldb::ChromiumLogger(f.release()); 376 *result = new leveldb::ChromiumLogger(f.release());
376 return Status::OK(); 377 return Status::OK();
377 } 378 }
378 } 379 }
379 380
380 } // namespace leveldb 381 } // namespace leveldb
OLDNEW
« no previous file with comments | « components/filesystem/util.cc ('k') | components/leveldb/leveldb_mojo_proxy.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698