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

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

Issue 2492283002: Mojo C++ bindings: switch components/filesystem mojom target to use STL types. (Closed)
Patch Set: Created 4 years, 1 month 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.cc » ('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
(...skipping 211 matching lines...) Expand 10 before | Expand all | Expand 10 after
222 : thread_(file_thread), dir_(dir) {} 222 : thread_(file_thread), dir_(dir) {}
223 223
224 MojoEnv::~MojoEnv() { 224 MojoEnv::~MojoEnv() {
225 thread_->UnregisterDirectory(dir_); 225 thread_->UnregisterDirectory(dir_);
226 } 226 }
227 227
228 Status MojoEnv::NewSequentialFile(const std::string& fname, 228 Status MojoEnv::NewSequentialFile(const std::string& fname,
229 SequentialFile** result) { 229 SequentialFile** result) {
230 TRACE_EVENT1("leveldb", "MojoEnv::NewSequentialFile", "fname", fname); 230 TRACE_EVENT1("leveldb", "MojoEnv::NewSequentialFile", "fname", fname);
231 base::File f = thread_->OpenFileHandle( 231 base::File f = thread_->OpenFileHandle(
232 dir_, mojo::String::From(fname), 232 dir_, fname, filesystem::mojom::kFlagOpen | filesystem::mojom::kFlagRead);
233 filesystem::mojom::kFlagOpen | filesystem::mojom::kFlagRead);
234 if (!f.IsValid()) { 233 if (!f.IsValid()) {
235 *result = nullptr; 234 *result = nullptr;
236 return MakeIOError(fname, "Unable to create sequential file", 235 return MakeIOError(fname, "Unable to create sequential file",
237 leveldb_env::kNewSequentialFile, f.error_details()); 236 leveldb_env::kNewSequentialFile, f.error_details());
238 } 237 }
239 238
240 *result = new MojoSequentialFile(fname, std::move(f)); 239 *result = new MojoSequentialFile(fname, std::move(f));
241 return Status::OK(); 240 return Status::OK();
242 } 241 }
243 242
244 Status MojoEnv::NewRandomAccessFile(const std::string& fname, 243 Status MojoEnv::NewRandomAccessFile(const std::string& fname,
245 RandomAccessFile** result) { 244 RandomAccessFile** result) {
246 TRACE_EVENT1("leveldb", "MojoEnv::NewRandomAccessFile", "fname", fname); 245 TRACE_EVENT1("leveldb", "MojoEnv::NewRandomAccessFile", "fname", fname);
247 base::File f = thread_->OpenFileHandle( 246 base::File f = thread_->OpenFileHandle(
248 dir_, mojo::String::From(fname), 247 dir_, fname, filesystem::mojom::kFlagRead | filesystem::mojom::kFlagOpen);
249 filesystem::mojom::kFlagRead | filesystem::mojom::kFlagOpen);
250 if (!f.IsValid()) { 248 if (!f.IsValid()) {
251 *result = nullptr; 249 *result = nullptr;
252 base::File::Error error_code = f.error_details(); 250 base::File::Error error_code = f.error_details();
253 return MakeIOError(fname, FileErrorString(error_code), 251 return MakeIOError(fname, FileErrorString(error_code),
254 leveldb_env::kNewRandomAccessFile, error_code); 252 leveldb_env::kNewRandomAccessFile, error_code);
255 } 253 }
256 254
257 *result = new MojoRandomAccessFile(fname, std::move(f)); 255 *result = new MojoRandomAccessFile(fname, std::move(f));
258 return Status::OK(); 256 return Status::OK();
259 } 257 }
260 258
261 Status MojoEnv::NewWritableFile(const std::string& fname, 259 Status MojoEnv::NewWritableFile(const std::string& fname,
262 WritableFile** result) { 260 WritableFile** result) {
263 TRACE_EVENT1("leveldb", "MojoEnv::NewWritableFile", "fname", fname); 261 TRACE_EVENT1("leveldb", "MojoEnv::NewWritableFile", "fname", fname);
264 base::File f = thread_->OpenFileHandle( 262 base::File f =
265 dir_, mojo::String::From(fname), 263 thread_->OpenFileHandle(dir_, fname, filesystem::mojom::kCreateAlways |
266 filesystem::mojom::kCreateAlways | filesystem::mojom::kFlagWrite); 264 filesystem::mojom::kFlagWrite);
267 if (!f.IsValid()) { 265 if (!f.IsValid()) {
268 *result = nullptr; 266 *result = nullptr;
269 return MakeIOError(fname, "Unable to create writable file", 267 return MakeIOError(fname, "Unable to create writable file",
270 leveldb_env::kNewWritableFile, f.error_details()); 268 leveldb_env::kNewWritableFile, f.error_details());
271 } 269 }
272 270
273 *result = new MojoWritableFile(dir_, fname, std::move(f), thread_); 271 *result = new MojoWritableFile(dir_, fname, std::move(f), thread_);
274 return Status::OK(); 272 return Status::OK();
275 } 273 }
276 274
277 Status MojoEnv::NewAppendableFile(const std::string& fname, 275 Status MojoEnv::NewAppendableFile(const std::string& fname,
278 WritableFile** result) { 276 WritableFile** result) {
279 TRACE_EVENT1("leveldb", "MojoEnv::NewAppendableFile", "fname", fname); 277 TRACE_EVENT1("leveldb", "MojoEnv::NewAppendableFile", "fname", fname);
280 base::File f = thread_->OpenFileHandle( 278 base::File f =
281 dir_, mojo::String::From(fname), 279 thread_->OpenFileHandle(dir_, fname, filesystem::mojom::kFlagOpenAlways |
282 filesystem::mojom::kFlagOpenAlways | filesystem::mojom::kFlagAppend); 280 filesystem::mojom::kFlagAppend);
283 if (!f.IsValid()) { 281 if (!f.IsValid()) {
284 *result = nullptr; 282 *result = nullptr;
285 return MakeIOError(fname, "Unable to create appendable file", 283 return MakeIOError(fname, "Unable to create appendable file",
286 leveldb_env::kNewAppendableFile, f.error_details()); 284 leveldb_env::kNewAppendableFile, f.error_details());
287 } 285 }
288 286
289 *result = new MojoWritableFile(dir_, fname, std::move(f), thread_); 287 *result = new MojoWritableFile(dir_, fname, std::move(f), thread_);
290 return Status::OK(); 288 return Status::OK();
291 } 289 }
292 290
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after
331 Status MojoEnv::RenameFile(const std::string& src, const std::string& target) { 329 Status MojoEnv::RenameFile(const std::string& src, const std::string& target) {
332 TRACE_EVENT2("leveldb", "MojoEnv::RenameFile", "src", src, "target", target); 330 TRACE_EVENT2("leveldb", "MojoEnv::RenameFile", "src", src, "target", target);
333 return FilesystemErrorToStatus(thread_->RenameFile(dir_, src, target), src, 331 return FilesystemErrorToStatus(thread_->RenameFile(dir_, src, target), src,
334 leveldb_env::kRenameFile); 332 leveldb_env::kRenameFile);
335 } 333 }
336 334
337 Status MojoEnv::LockFile(const std::string& fname, FileLock** lock) { 335 Status MojoEnv::LockFile(const std::string& fname, FileLock** lock) {
338 TRACE_EVENT1("leveldb", "MojoEnv::LockFile", "fname", fname); 336 TRACE_EVENT1("leveldb", "MojoEnv::LockFile", "fname", fname);
339 337
340 std::pair<filesystem::mojom::FileError, LevelDBMojoProxy::OpaqueLock*> p = 338 std::pair<filesystem::mojom::FileError, LevelDBMojoProxy::OpaqueLock*> p =
341 thread_->LockFile(dir_, mojo::String::From(fname)); 339 thread_->LockFile(dir_, fname);
342 340
343 if (p.second) 341 if (p.second)
344 *lock = new MojoFileLock(p.second, fname); 342 *lock = new MojoFileLock(p.second, fname);
345 343
346 return FilesystemErrorToStatus(p.first, fname, leveldb_env::kLockFile); 344 return FilesystemErrorToStatus(p.first, fname, leveldb_env::kLockFile);
347 } 345 }
348 346
349 Status MojoEnv::UnlockFile(FileLock* lock) { 347 Status MojoEnv::UnlockFile(FileLock* lock) {
350 MojoFileLock* my_lock = reinterpret_cast<MojoFileLock*>(lock); 348 MojoFileLock* my_lock = reinterpret_cast<MojoFileLock*>(lock);
351 349
(...skipping 11 matching lines...) Expand all
363 // service_manager::ServiceTest, 361 // service_manager::ServiceTest,
364 // we probably won't use it since the mojo filesystem actually handles 362 // we probably won't use it since the mojo filesystem actually handles
365 // temporary filesystems just fine. 363 // temporary filesystems just fine.
366 NOTREACHED(); 364 NOTREACHED();
367 return Status::OK(); 365 return Status::OK();
368 } 366 }
369 367
370 Status MojoEnv::NewLogger(const std::string& fname, Logger** result) { 368 Status MojoEnv::NewLogger(const std::string& fname, Logger** result) {
371 TRACE_EVENT1("leveldb", "MojoEnv::NewLogger", "fname", fname); 369 TRACE_EVENT1("leveldb", "MojoEnv::NewLogger", "fname", fname);
372 base::File f(thread_->OpenFileHandle( 370 base::File f(thread_->OpenFileHandle(
373 dir_, mojo::String::From(fname), 371 dir_, fname,
374 filesystem::mojom::kCreateAlways | filesystem::mojom::kFlagWrite)); 372 filesystem::mojom::kCreateAlways | filesystem::mojom::kFlagWrite));
375 if (!f.IsValid()) { 373 if (!f.IsValid()) {
376 *result = NULL; 374 *result = NULL;
377 return MakeIOError(fname, "Unable to create log file", 375 return MakeIOError(fname, "Unable to create log file",
378 leveldb_env::kNewLogger, f.error_details()); 376 leveldb_env::kNewLogger, f.error_details());
379 } else { 377 } else {
380 *result = new leveldb::ChromiumLogger(std::move(f)); 378 *result = new leveldb::ChromiumLogger(std::move(f));
381 return Status::OK(); 379 return Status::OK();
382 } 380 }
383 } 381 }
384 382
385 } // namespace leveldb 383 } // namespace leveldb
OLDNEW
« no previous file with comments | « components/filesystem/util.cc ('k') | components/leveldb/leveldb_mojo_proxy.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698