OLD | NEW |
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/leveldb_service_impl.h" | 5 #include "components/leveldb/leveldb_service_impl.h" |
6 | 6 |
7 #include <memory> | 7 #include <memory> |
8 | 8 |
9 #include "base/memory/ptr_util.h" | 9 #include "base/memory/ptr_util.h" |
10 #include "components/leveldb/env_mojo.h" | 10 #include "components/leveldb/env_mojo.h" |
11 #include "components/leveldb/leveldb_database_impl.h" | 11 #include "components/leveldb/leveldb_database_impl.h" |
12 #include "components/leveldb/public/cpp/util.h" | 12 #include "components/leveldb/public/cpp/util.h" |
| 13 #include "mojo/public/cpp/bindings/strong_binding.h" |
13 #include "third_party/leveldatabase/env_chromium.h" | 14 #include "third_party/leveldatabase/env_chromium.h" |
14 #include "third_party/leveldatabase/src/helpers/memenv/memenv.h" | 15 #include "third_party/leveldatabase/src/helpers/memenv/memenv.h" |
15 #include "third_party/leveldatabase/src/include/leveldb/db.h" | 16 #include "third_party/leveldatabase/src/include/leveldb/db.h" |
16 #include "third_party/leveldatabase/src/include/leveldb/env.h" | 17 #include "third_party/leveldatabase/src/include/leveldb/env.h" |
17 #include "third_party/leveldatabase/src/include/leveldb/filter_policy.h" | 18 #include "third_party/leveldatabase/src/include/leveldb/filter_policy.h" |
18 #include "third_party/leveldatabase/src/include/leveldb/slice.h" | 19 #include "third_party/leveldatabase/src/include/leveldb/slice.h" |
19 | 20 |
20 namespace leveldb { | 21 namespace leveldb { |
21 | 22 |
22 LevelDBServiceImpl::LevelDBServiceImpl( | 23 LevelDBServiceImpl::LevelDBServiceImpl( |
(...skipping 30 matching lines...) Expand all Loading... |
53 LevelDBMojoProxy::OpaqueDir* dir = | 54 LevelDBMojoProxy::OpaqueDir* dir = |
54 thread_->RegisterDirectory(std::move(directory)); | 55 thread_->RegisterDirectory(std::move(directory)); |
55 | 56 |
56 std::unique_ptr<MojoEnv> env_mojo(new MojoEnv(thread_, dir)); | 57 std::unique_ptr<MojoEnv> env_mojo(new MojoEnv(thread_, dir)); |
57 options.env = env_mojo.get(); | 58 options.env = env_mojo.get(); |
58 | 59 |
59 leveldb::DB* db = nullptr; | 60 leveldb::DB* db = nullptr; |
60 leveldb::Status s = leveldb::DB::Open(options, dbname, &db); | 61 leveldb::Status s = leveldb::DB::Open(options, dbname, &db); |
61 | 62 |
62 if (s.ok()) { | 63 if (s.ok()) { |
63 new LevelDBDatabaseImpl(std::move(database), std::move(env_mojo), | 64 mojo::MakeStrongBinding(base::MakeUnique<LevelDBDatabaseImpl>( |
64 base::WrapUnique(db)); | 65 std::move(env_mojo), base::WrapUnique(db)), |
| 66 std::move(database)); |
65 } | 67 } |
66 | 68 |
67 callback.Run(LeveldbStatusToError(s)); | 69 callback.Run(LeveldbStatusToError(s)); |
68 } | 70 } |
69 | 71 |
70 void LevelDBServiceImpl::OpenInMemory( | 72 void LevelDBServiceImpl::OpenInMemory( |
71 leveldb::mojom::LevelDBDatabaseRequest database, | 73 leveldb::mojom::LevelDBDatabaseRequest database, |
72 const OpenCallback& callback) { | 74 const OpenCallback& callback) { |
73 leveldb::Options options; | 75 leveldb::Options options; |
74 options.create_if_missing = true; | 76 options.create_if_missing = true; |
75 options.max_open_files = 0; // Use minimum. | 77 options.max_open_files = 0; // Use minimum. |
76 | 78 |
77 std::unique_ptr<leveldb::Env> env( | 79 std::unique_ptr<leveldb::Env> env( |
78 leveldb::NewMemEnv(leveldb::Env::Default())); | 80 leveldb::NewMemEnv(leveldb::Env::Default())); |
79 options.env = env.get(); | 81 options.env = env.get(); |
80 | 82 |
81 leveldb::DB* db = nullptr; | 83 leveldb::DB* db = nullptr; |
82 leveldb::Status s = leveldb::DB::Open(options, "", &db); | 84 leveldb::Status s = leveldb::DB::Open(options, "", &db); |
83 | 85 |
84 if (s.ok()) { | 86 if (s.ok()) { |
85 new LevelDBDatabaseImpl(std::move(database), std::move(env), | 87 mojo::MakeStrongBinding(base::MakeUnique<LevelDBDatabaseImpl>( |
86 base::WrapUnique(db)); | 88 std::move(env), base::WrapUnique(db)), |
| 89 std::move(database)); |
87 } | 90 } |
88 | 91 |
89 callback.Run(LeveldbStatusToError(s)); | 92 callback.Run(LeveldbStatusToError(s)); |
90 } | 93 } |
91 | 94 |
92 } // namespace leveldb | 95 } // namespace leveldb |
OLD | NEW |