From 58ea5e22bc01aa5448340ed5582c9aaff516950b Mon Sep 17 00:00:00 2001 From: levlam Date: Tue, 23 Jan 2024 19:26:43 +0300 Subject: [PATCH] Add KeyValueSyncInterface::for_each. --- tddb/td/db/BinlogKeyValue.h | 7 +++++++ tddb/td/db/KeyValueSyncInterface.h | 3 +++ 2 files changed, 10 insertions(+) diff --git a/tddb/td/db/BinlogKeyValue.h b/tddb/td/db/BinlogKeyValue.h index 034db47b8..735e120d0 100644 --- a/tddb/td/db/BinlogKeyValue.h +++ b/tddb/td/db/BinlogKeyValue.h @@ -220,6 +220,13 @@ class BinlogKeyValue final : public KeyValueSyncInterface { binlog_->lazy_sync(std::move(promise)); } + void for_each(std::function func) final { + auto lock = rw_mutex_.lock_write().move_as_ok(); + for (const auto &kv : map_) { + func(kv.first, kv.second.first); + } + } + std::unordered_map> prefix_get(Slice prefix) final { auto lock = rw_mutex_.lock_write().move_as_ok(); std::unordered_map> res; diff --git a/tddb/td/db/KeyValueSyncInterface.h b/tddb/td/db/KeyValueSyncInterface.h index d9e53cbf8..d4e43ffef 100644 --- a/tddb/td/db/KeyValueSyncInterface.h +++ b/tddb/td/db/KeyValueSyncInterface.h @@ -12,6 +12,7 @@ #include "td/utils/Promise.h" #include "td/utils/Slice.h" +#include #include namespace td { @@ -35,6 +36,8 @@ class KeyValueSyncInterface { virtual string get(const string &key) = 0; + virtual void for_each(std::function func) = 0; + virtual std::unordered_map> prefix_get(Slice prefix) = 0; virtual FlatHashMap get_all() = 0;