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

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

Issue 1839823002: mojo leveldb: Remove the created file thread. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: And cut out manual Signal()ing most places. Created 4 years, 8 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/leveldb/env_mojo.h ('k') | components/leveldb/leveldb.gyp » ('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 "base/trace_event/trace_event.h" 9 #include "base/trace_event/trace_event.h"
10 #include "third_party/leveldatabase/chromium_logger.h" 10 #include "third_party/leveldatabase/chromium_logger.h"
(...skipping 23 matching lines...) Expand all
34 base::File::ErrorToString(base::File::Error(static_cast<int>(error))); 34 base::File::ErrorToString(base::File::Error(static_cast<int>(error)));
35 35
36 char buf[512]; 36 char buf[512];
37 snprintf(buf, sizeof(buf), "%s (MojoFSError: %d::%s)", err_str.c_str(), 37 snprintf(buf, sizeof(buf), "%s (MojoFSError: %d::%s)", err_str.c_str(),
38 method, MethodIDToString(method)); 38 method, MethodIDToString(method));
39 return Status::IOError(filename, buf); 39 return Status::IOError(filename, buf);
40 } 40 }
41 41
42 class MojoFileLock : public FileLock { 42 class MojoFileLock : public FileLock {
43 public: 43 public:
44 MojoFileLock(LevelDBFileThread::OpaqueLock* lock, const std::string& name) 44 MojoFileLock(LevelDBMojoProxy::OpaqueLock* lock, const std::string& name)
45 : fname_(name), lock_(lock) {} 45 : fname_(name), lock_(lock) {}
46 ~MojoFileLock() override { DCHECK(!lock_); } 46 ~MojoFileLock() override { DCHECK(!lock_); }
47 47
48 const std::string& name() const { return fname_; } 48 const std::string& name() const { return fname_; }
49 49
50 LevelDBFileThread::OpaqueLock* TakeLock() { 50 LevelDBMojoProxy::OpaqueLock* TakeLock() {
51 LevelDBFileThread::OpaqueLock* to_return = lock_; 51 LevelDBMojoProxy::OpaqueLock* to_return = lock_;
52 lock_ = nullptr; 52 lock_ = nullptr;
53 return to_return; 53 return to_return;
54 } 54 }
55 55
56 private: 56 private:
57 std::string fname_; 57 std::string fname_;
58 LevelDBFileThread::OpaqueLock* lock_; 58 LevelDBMojoProxy::OpaqueLock* lock_;
59 }; 59 };
60 60
61 class MojoSequentialFile : public leveldb::SequentialFile { 61 class MojoSequentialFile : public leveldb::SequentialFile {
62 public: 62 public:
63 MojoSequentialFile(const std::string& fname, base::File f) 63 MojoSequentialFile(const std::string& fname, base::File f)
64 : filename_(fname), file_(std::move(f)) {} 64 : filename_(fname), file_(std::move(f)) {}
65 ~MojoSequentialFile() override {} 65 ~MojoSequentialFile() override {}
66 66
67 Status Read(size_t n, Slice* result, char* scratch) override { 67 Status Read(size_t n, Slice* result, char* scratch) override {
68 int bytes_read = file_.ReadAtCurrentPosNoBestEffort( 68 int bytes_read = file_.ReadAtCurrentPosNoBestEffort(
(...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after
118 118
119 private: 119 private:
120 std::string filename_; 120 std::string filename_;
121 mutable base::File file_; 121 mutable base::File file_;
122 122
123 DISALLOW_COPY_AND_ASSIGN(MojoRandomAccessFile); 123 DISALLOW_COPY_AND_ASSIGN(MojoRandomAccessFile);
124 }; 124 };
125 125
126 class MojoWritableFile : public leveldb::WritableFile { 126 class MojoWritableFile : public leveldb::WritableFile {
127 public: 127 public:
128 MojoWritableFile(LevelDBFileThread::OpaqueDir* dir, 128 MojoWritableFile(LevelDBMojoProxy::OpaqueDir* dir,
129 const std::string& fname, 129 const std::string& fname,
130 base::File f, 130 base::File f,
131 scoped_refptr<LevelDBFileThread> thread) 131 scoped_refptr<LevelDBMojoProxy> thread)
132 : filename_(fname), 132 : filename_(fname),
133 file_(std::move(f)), 133 file_(std::move(f)),
134 file_type_(kOther), 134 file_type_(kOther),
135 dir_(dir), 135 dir_(dir),
136 thread_(thread) { 136 thread_(thread) {
137 base::FilePath path = base::FilePath::FromUTF8Unsafe(fname); 137 base::FilePath path = base::FilePath::FromUTF8Unsafe(fname);
138 if (path.BaseName().AsUTF8Unsafe().find("MANIFEST") == 0) 138 if (path.BaseName().AsUTF8Unsafe().find("MANIFEST") == 0)
139 file_type_ = kManifest; 139 file_type_ = kManifest;
140 else if (path.MatchesExtension(table_extension)) 140 else if (path.MatchesExtension(table_extension))
141 file_type_ = kTable; 141 file_type_ = kTable;
(...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after
195 return error == filesystem::FileError::OK 195 return error == filesystem::FileError::OK
196 ? Status::OK() 196 ? Status::OK()
197 : Status::IOError(filename_, 197 : Status::IOError(filename_,
198 base::File::ErrorToString(base::File::Error( 198 base::File::ErrorToString(base::File::Error(
199 static_cast<int>(error)))); 199 static_cast<int>(error))));
200 } 200 }
201 201
202 std::string filename_; 202 std::string filename_;
203 base::File file_; 203 base::File file_;
204 Type file_type_; 204 Type file_type_;
205 LevelDBFileThread::OpaqueDir* dir_; 205 LevelDBMojoProxy::OpaqueDir* dir_;
206 std::string parent_dir_; 206 std::string parent_dir_;
207 scoped_refptr<LevelDBFileThread> thread_; 207 scoped_refptr<LevelDBMojoProxy> thread_;
208 208
209 DISALLOW_COPY_AND_ASSIGN(MojoWritableFile); 209 DISALLOW_COPY_AND_ASSIGN(MojoWritableFile);
210 }; 210 };
211 211
212 } // namespace 212 } // namespace
213 213
214 MojoEnv::MojoEnv(scoped_refptr<LevelDBFileThread> file_thread, 214 MojoEnv::MojoEnv(scoped_refptr<LevelDBMojoProxy> file_thread,
215 LevelDBFileThread::OpaqueDir* dir) 215 LevelDBMojoProxy::OpaqueDir* dir)
216 : thread_(file_thread), 216 : thread_(file_thread), dir_(dir) {}
217 dir_(dir) {
218 }
219 217
220 MojoEnv::~MojoEnv() { 218 MojoEnv::~MojoEnv() {
221 thread_->UnregisterDirectory(dir_); 219 thread_->UnregisterDirectory(dir_);
222 } 220 }
223 221
224 Status MojoEnv::NewSequentialFile(const std::string& fname, 222 Status MojoEnv::NewSequentialFile(const std::string& fname,
225 SequentialFile** result) { 223 SequentialFile** result) {
226 TRACE_EVENT1("leveldb", "MojoEnv::NewSequentialFile", "fname", fname); 224 TRACE_EVENT1("leveldb", "MojoEnv::NewSequentialFile", "fname", fname);
227 base::File f = thread_->OpenFileHandle( 225 base::File f = thread_->OpenFileHandle(
228 dir_, mojo::String::From(fname), 226 dir_, mojo::String::From(fname),
(...skipping 97 matching lines...) Expand 10 before | Expand all | Expand 10 after
326 324
327 Status MojoEnv::RenameFile(const std::string& src, const std::string& target) { 325 Status MojoEnv::RenameFile(const std::string& src, const std::string& target) {
328 TRACE_EVENT2("leveldb", "MojoEnv::RenameFile", "src", src, "target", target); 326 TRACE_EVENT2("leveldb", "MojoEnv::RenameFile", "src", src, "target", target);
329 return FilesystemErrorToStatus(thread_->RenameFile(dir_, src, target), src, 327 return FilesystemErrorToStatus(thread_->RenameFile(dir_, src, target), src,
330 leveldb_env::kRenameFile); 328 leveldb_env::kRenameFile);
331 } 329 }
332 330
333 Status MojoEnv::LockFile(const std::string& fname, FileLock** lock) { 331 Status MojoEnv::LockFile(const std::string& fname, FileLock** lock) {
334 TRACE_EVENT1("leveldb", "MojoEnv::LockFile", "fname", fname); 332 TRACE_EVENT1("leveldb", "MojoEnv::LockFile", "fname", fname);
335 333
336 std::pair<filesystem::FileError, LevelDBFileThread::OpaqueLock*> p = 334 std::pair<filesystem::FileError, LevelDBMojoProxy::OpaqueLock*> p =
337 thread_->LockFile(dir_, mojo::String::From(fname)); 335 thread_->LockFile(dir_, mojo::String::From(fname));
338 336
339 if (p.second) 337 if (p.second)
340 *lock = new MojoFileLock(p.second, fname); 338 *lock = new MojoFileLock(p.second, fname);
341 339
342 return FilesystemErrorToStatus(p.first, fname, leveldb_env::kLockFile); 340 return FilesystemErrorToStatus(p.first, fname, leveldb_env::kLockFile);
343 } 341 }
344 342
345 Status MojoEnv::UnlockFile(FileLock* lock) { 343 Status MojoEnv::UnlockFile(FileLock* lock) {
346 MojoFileLock* my_lock = reinterpret_cast<MojoFileLock*>(lock); 344 MojoFileLock* my_lock = reinterpret_cast<MojoFileLock*>(lock);
(...skipping 24 matching lines...) Expand all
371 *result = NULL; 369 *result = NULL;
372 return MakeIOError(fname, "Unable to create log file", 370 return MakeIOError(fname, "Unable to create log file",
373 leveldb_env::kNewLogger, f->error_details()); 371 leveldb_env::kNewLogger, f->error_details());
374 } else { 372 } else {
375 *result = new leveldb::ChromiumLogger(f.release()); 373 *result = new leveldb::ChromiumLogger(f.release());
376 return Status::OK(); 374 return Status::OK();
377 } 375 }
378 } 376 }
379 377
380 } // namespace leveldb 378 } // namespace leveldb
OLDNEW
« no previous file with comments | « components/leveldb/env_mojo.h ('k') | components/leveldb/leveldb.gyp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698