aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorlevlam <levlam@telegram.org>2025-05-21 16:28:55 +0300
committerlevlam <levlam@telegram.org>2025-05-21 16:28:55 +0300
commit0f1edc740b36f6eb2b42948ecc6786a6d158b3d0 (patch)
treec25e16bf7ead3a3101fd84c77101fde5cdb2df5e
parente59555e2f0c40a3fec04f08f98ffa262b13ff564 (diff)
Fix storer/parser types.
-rw-r--r--tddb/td/db/BinlogKeyValue.h14
-rw-r--r--tddb/td/db/TQueue.cpp4
-rw-r--r--tddb/td/db/binlog/Binlog.cpp8
3 files changed, 18 insertions, 8 deletions
diff --git a/tddb/td/db/BinlogKeyValue.h b/tddb/td/db/BinlogKeyValue.h
index c9c2a1ee1..e71318773 100644
--- a/tddb/td/db/BinlogKeyValue.h
+++ b/tddb/td/db/BinlogKeyValue.h
@@ -45,13 +45,13 @@ class BinlogKeyValue final : public KeyValueSyncInterface {
Slice key;
Slice value;
template <class StorerT>
- void store(StorerT &&storer) const {
+ void store(StorerT &storer) const {
storer.store_string(key);
storer.store_string(value);
}
template <class ParserT>
- void parse(ParserT &&parser) {
+ void parse(ParserT &parser) {
key = parser.template fetch_string<Slice>();
value = parser.template fetch_string<Slice>();
}
@@ -84,7 +84,10 @@ class BinlogKeyValue final : public KeyValueSyncInterface {
name,
[&](const BinlogEvent &binlog_event) {
Event event;
- event.parse(TlParser(binlog_event.get_data()));
+ TlParser event_parser(binlog_event.get_data());
+ event.parse(event_parser);
+ event_parser.fetch_end();
+ LOG_CHECK(event_parser.get_error() == nullptr) << event_parser.get_status();
if (event.key.empty()) {
LOG(ERROR) << "Have event with empty key";
return;
@@ -109,7 +112,10 @@ class BinlogKeyValue final : public KeyValueSyncInterface {
void external_init_handle(const BinlogEvent &binlog_event) {
Event event;
- event.parse(TlParser(binlog_event.get_data()));
+ TlParser event_parser(binlog_event.get_data());
+ event.parse(event_parser);
+ event_parser.fetch_end();
+ LOG_CHECK(event_parser.get_error() == nullptr) << event_parser.get_status();
if (event.key.empty()) {
LOG(ERROR) << "Have external event with empty key";
return;
diff --git a/tddb/td/db/TQueue.cpp b/tddb/td/db/TQueue.cpp
index 61f8c0a9d..542f3f65a 100644
--- a/tddb/td/db/TQueue.cpp
+++ b/tddb/td/db/TQueue.cpp
@@ -486,7 +486,7 @@ struct TQueueLogEvent final : public Storer {
int64 extra;
template <class StorerT>
- void store(StorerT &&storer) const {
+ void store(StorerT &storer) const {
using td::store;
store(queue_id, storer);
store(event_id, storer);
@@ -498,7 +498,7 @@ struct TQueueLogEvent final : public Storer {
}
template <class ParserT>
- void parse(ParserT &&parser, int32 has_extra) {
+ void parse(ParserT &parser, int32 has_extra) {
using td::parse;
parse(queue_id, parser);
parse(event_id, parser);
diff --git a/tddb/td/db/binlog/Binlog.cpp b/tddb/td/db/binlog/Binlog.cpp
index 43c0e6e39..989ea8256 100644
--- a/tddb/td/db/binlog/Binlog.cpp
+++ b/tddb/td/db/binlog/Binlog.cpp
@@ -81,8 +81,9 @@ struct AesCtrEncryptionEvent {
store(iv_, storer);
store(key_hash_, storer);
}
+
template <class ParserT>
- void parse(ParserT &&parser) {
+ void parse(ParserT &parser) {
using td::parse;
BEGIN_PARSE_FLAGS();
END_PARSE_FLAGS();
@@ -340,7 +341,10 @@ void Binlog::do_event(BinlogEvent &&event) {
if (event.type_ < 0) {
if (event.type_ == BinlogEvent::ServiceTypes::AesCtrEncryption) {
detail::AesCtrEncryptionEvent encryption_event;
- encryption_event.parse(TlParser(event.get_data()));
+ TlParser event_parser(event.get_data());
+ encryption_event.parse(event_parser);
+ event_parser.fetch_end();
+ LOG_CHECK(event_parser.get_error() == nullptr) << event_parser.get_status();
string key;
if (aes_ctr_key_salt_ == encryption_event.key_salt_) {