| Index: components/leveldb/leveldb_service_impl.cc
|
| diff --git a/components/leveldb/leveldb_service_impl.cc b/components/leveldb/leveldb_service_impl.cc
|
| index baff56bd6a651abba774469acdaaa1b904242f1e..1cabe737bb123cf0f7f34a38fd49059bb471b72a 100644
|
| --- a/components/leveldb/leveldb_service_impl.cc
|
| +++ b/components/leveldb/leveldb_service_impl.cc
|
| @@ -8,6 +8,7 @@
|
| #include "components/leveldb/leveldb_database_impl.h"
|
| #include "components/leveldb/util.h"
|
| #include "third_party/leveldatabase/env_chromium.h"
|
| +#include "third_party/leveldatabase/src/helpers/memenv/memenv.h"
|
| #include "third_party/leveldatabase/src/include/leveldb/db.h"
|
| #include "third_party/leveldatabase/src/include/leveldb/env.h"
|
| #include "third_party/leveldatabase/src/include/leveldb/filter_policy.h"
|
| @@ -53,4 +54,25 @@ void LevelDBServiceImpl::Open(filesystem::DirectoryPtr directory,
|
| callback.Run(LeveldbStatusToError(s));
|
| }
|
|
|
| +void LevelDBServiceImpl::OpenInMemory(leveldb::LevelDBDatabaseRequest database,
|
| + const OpenCallback& callback) {
|
| + leveldb::Options options;
|
| + options.create_if_missing = true;
|
| + options.max_open_files = 0; // Use minimum.
|
| + options.reuse_logs = leveldb_env::kDefaultLogReuseOptionValue;
|
| +
|
| + scoped_ptr<leveldb::Env> env(leveldb::NewMemEnv(leveldb::Env::Default()));
|
| + options.env = env.get();
|
| +
|
| + leveldb::DB* db = nullptr;
|
| + leveldb::Status s = leveldb::DB::Open(options, "", &db);
|
| +
|
| + if (s.ok()) {
|
| + new LevelDBDatabaseImpl(std::move(database), std::move(env),
|
| + scoped_ptr<leveldb::DB>(db));
|
| + }
|
| +
|
| + callback.Run(LeveldbStatusToError(s));
|
| +}
|
| +
|
| } // namespace leveldb
|
|
|