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

Unified Diff: components/leveldb_proto/proto_database_impl.h

Issue 2379113002: Extended the ProtoDatabase to provide LoadKeys() functionality. (Closed)
Patch Set: minor cleanups Created 4 years, 3 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « components/leveldb_proto/proto_database.h ('k') | components/leveldb_proto/proto_database_impl_unittest.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: components/leveldb_proto/proto_database_impl.h
diff --git a/components/leveldb_proto/proto_database_impl.h b/components/leveldb_proto/proto_database_impl.h
index da02eed13876f266f1a45fc883aeae95c061039f..2e04ffff5d596960b1c29fbe67c49f263bec16d8 100644
--- a/components/leveldb_proto/proto_database_impl.h
+++ b/components/leveldb_proto/proto_database_impl.h
@@ -53,6 +53,8 @@ class ProtoDatabaseImpl : public ProtoDatabase<T> {
const typename ProtoDatabase<T>::UpdateCallback& callback) override;
void LoadEntries(
const typename ProtoDatabase<T>::LoadCallback& callback) override;
+ void LoadKeys(
+ const typename ProtoDatabase<T>::LoadKeysCallback& callback) override;
void GetEntry(
const std::string& key,
const typename ProtoDatabase<T>::GetCallback& callback) override;
@@ -94,12 +96,20 @@ void RunUpdateCallback(
template <typename T>
void RunLoadCallback(const typename ProtoDatabase<T>::LoadCallback& callback,
- const bool* success,
+ bool* success,
std::unique_ptr<std::vector<T>> entries) {
callback.Run(*success, std::move(entries));
}
template <typename T>
+void RunLoadKeysCallback(
+ const typename ProtoDatabase<T>::LoadKeysCallback& callback,
+ std::unique_ptr<bool> success,
+ std::unique_ptr<std::vector<std::string>> keys) {
+ callback.Run(*success, std::move(keys));
+}
+
+template <typename T>
void RunGetCallback(const typename ProtoDatabase<T>::GetCallback& callback,
const bool* success,
const bool* found,
@@ -171,6 +181,15 @@ void LoadEntriesFromTaskRunner(LevelDB* database,
}
}
+void LoadKeysFromTaskRunner(LevelDB* database,
+ std::vector<std::string>* keys,
+ bool* success) {
+ DCHECK(success);
+ DCHECK(keys);
+ keys->clear();
+ *success = database->LoadKeys(keys);
+}
+
template <typename T>
void GetEntryFromTaskRunner(LevelDB* database,
const std::string& key,
@@ -286,6 +305,22 @@ void ProtoDatabaseImpl<T>::LoadEntries(
}
template <typename T>
+void ProtoDatabaseImpl<T>::LoadKeys(
+ const typename ProtoDatabase<T>::LoadKeysCallback& callback) {
+ DCHECK(thread_checker_.CalledOnValidThread());
+ std::unique_ptr<bool> success(new bool(false));
+ std::unique_ptr<std::vector<std::string>> keys(
+ new std::vector<std::string>());
nyquist 2016/10/03 21:46:42 Nit: Can these not use MakeUnique?
tschumann 2016/10/04 09:41:38 Changed to not repeat the types anymore. I think i
nyquist 2016/10/04 14:22:45 Agreed. I think this looks very clean.
+ auto load_task =
+ base::Bind(LoadKeysFromTaskRunner, base::Unretained(db_.get()),
+ keys.get(), success.get());
+ task_runner_->PostTaskAndReply(
+ FROM_HERE, load_task,
+ base::Bind(RunLoadKeysCallback<T>, callback, base::Passed(&success),
+ base::Passed(&keys)));
+}
+
+template <typename T>
void ProtoDatabaseImpl<T>::GetEntry(
const std::string& key,
const typename ProtoDatabase<T>::GetCallback& callback) {
« no previous file with comments | « components/leveldb_proto/proto_database.h ('k') | components/leveldb_proto/proto_database_impl_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698