diff --git a/td/telegram/OrderedMessage.cpp b/td/telegram/OrderedMessage.cpp index 7c363c65d..299908849 100644 --- a/td/telegram/OrderedMessage.cpp +++ b/td/telegram/OrderedMessage.cpp @@ -169,4 +169,25 @@ vector OrderedMessages::find_messages_by_date( return message_ids; } +static void do_traverse_messages(const OrderedMessage *ordered_message, + const std::function &need_scan_older, + const std::function &need_scan_newer) { + if (ordered_message == nullptr) { + return; + } + + if (need_scan_older(ordered_message->message_id)) { + do_traverse_messages(ordered_message->left.get(), need_scan_older, need_scan_newer); + } + + if (need_scan_newer(ordered_message->message_id)) { + do_traverse_messages(ordered_message->right.get(), need_scan_older, need_scan_newer); + } +} + +void OrderedMessages::traverse_messages(const std::function &need_scan_older, + const std::function &need_scan_newer) const { + do_traverse_messages(messages_.get(), need_scan_older, need_scan_newer); +} + } // namespace td diff --git a/td/telegram/OrderedMessage.h b/td/telegram/OrderedMessage.h index a6e55e33e..9b20ef027 100644 --- a/td/telegram/OrderedMessage.h +++ b/td/telegram/OrderedMessage.h @@ -174,6 +174,9 @@ struct OrderedMessages { vector find_messages_by_date(int32 min_date, int32 max_date, const std::function &get_message_date) const; + + void traverse_messages(const std::function &need_scan_older, + const std::function &need_scan_newer) const; }; } // namespace td