Skip to content

Commit 0f1edc7

Browse files
committed
Fix storer/parser types.
1 parent e59555e commit 0f1edc7

File tree

3 files changed

+18
-8
lines changed

3 files changed

+18
-8
lines changed

tddb/td/db/BinlogKeyValue.h

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -45,13 +45,13 @@ class BinlogKeyValue final : public KeyValueSyncInterface {
4545
Slice key;
4646
Slice value;
4747
template <class StorerT>
48-
void store(StorerT &&storer) const {
48+
void store(StorerT &storer) const {
4949
storer.store_string(key);
5050
storer.store_string(value);
5151
}
5252

5353
template <class ParserT>
54-
void parse(ParserT &&parser) {
54+
void parse(ParserT &parser) {
5555
key = parser.template fetch_string<Slice>();
5656
value = parser.template fetch_string<Slice>();
5757
}
@@ -84,7 +84,10 @@ class BinlogKeyValue final : public KeyValueSyncInterface {
8484
name,
8585
[&](const BinlogEvent &binlog_event) {
8686
Event event;
87-
event.parse(TlParser(binlog_event.get_data()));
87+
TlParser event_parser(binlog_event.get_data());
88+
event.parse(event_parser);
89+
event_parser.fetch_end();
90+
LOG_CHECK(event_parser.get_error() == nullptr) << event_parser.get_status();
8891
if (event.key.empty()) {
8992
LOG(ERROR) << "Have event with empty key";
9093
return;
@@ -109,7 +112,10 @@ class BinlogKeyValue final : public KeyValueSyncInterface {
109112

110113
void external_init_handle(const BinlogEvent &binlog_event) {
111114
Event event;
112-
event.parse(TlParser(binlog_event.get_data()));
115+
TlParser event_parser(binlog_event.get_data());
116+
event.parse(event_parser);
117+
event_parser.fetch_end();
118+
LOG_CHECK(event_parser.get_error() == nullptr) << event_parser.get_status();
113119
if (event.key.empty()) {
114120
LOG(ERROR) << "Have external event with empty key";
115121
return;

tddb/td/db/TQueue.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -486,7 +486,7 @@ struct TQueueLogEvent final : public Storer {
486486
int64 extra;
487487

488488
template <class StorerT>
489-
void store(StorerT &&storer) const {
489+
void store(StorerT &storer) const {
490490
using td::store;
491491
store(queue_id, storer);
492492
store(event_id, storer);
@@ -498,7 +498,7 @@ struct TQueueLogEvent final : public Storer {
498498
}
499499

500500
template <class ParserT>
501-
void parse(ParserT &&parser, int32 has_extra) {
501+
void parse(ParserT &parser, int32 has_extra) {
502502
using td::parse;
503503
parse(queue_id, parser);
504504
parse(event_id, parser);

tddb/td/db/binlog/Binlog.cpp

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -81,8 +81,9 @@ struct AesCtrEncryptionEvent {
8181
store(iv_, storer);
8282
store(key_hash_, storer);
8383
}
84+
8485
template <class ParserT>
85-
void parse(ParserT &&parser) {
86+
void parse(ParserT &parser) {
8687
using td::parse;
8788
BEGIN_PARSE_FLAGS();
8889
END_PARSE_FLAGS();
@@ -340,7 +341,10 @@ void Binlog::do_event(BinlogEvent &&event) {
340341
if (event.type_ < 0) {
341342
if (event.type_ == BinlogEvent::ServiceTypes::AesCtrEncryption) {
342343
detail::AesCtrEncryptionEvent encryption_event;
343-
encryption_event.parse(TlParser(event.get_data()));
344+
TlParser event_parser(event.get_data());
345+
encryption_event.parse(event_parser);
346+
event_parser.fetch_end();
347+
LOG_CHECK(event_parser.get_error() == nullptr) << event_parser.get_status();
344348

345349
string key;
346350
if (aes_ctr_key_salt_ == encryption_event.key_salt_) {

0 commit comments

Comments
 (0)