Skip to content

Commit 0b3e86d

Browse files
authored
Get rid of copy-pase of TChangeRecordContainer (#8352)
1 parent dbf5fb8 commit 0b3e86d

File tree

8 files changed

+40
-61
lines changed

8 files changed

+40
-61
lines changed

ydb/core/backup/impl/table_writer_impl.h

+2-12
Original file line numberDiff line numberDiff line change
@@ -192,19 +192,9 @@ namespace NKikimr {
192192

193193
template <>
194194
struct TChangeRecordContainer<NBackup::NImpl::TChangeRecord>
195-
: public TBaseChangeRecordContainer
195+
: public TBaseChangeRecordContainer<NBackup::NImpl::TChangeRecord>
196196
{
197-
TChangeRecordContainer() = default;
198-
199-
explicit TChangeRecordContainer(TVector<NBackup::NImpl::TChangeRecord::TPtr>&& records)
200-
: Records(std::move(records))
201-
{}
202-
203-
TVector<NBackup::NImpl::TChangeRecord::TPtr> Records;
204-
205-
TString Out() override {
206-
return TStringBuilder() << "[" << JoinSeq(",", Records) << "]";
207-
}
197+
using TBaseChangeRecordContainer<NBackup::NImpl::TChangeRecord>::TBaseChangeRecordContainer;
208198
};
209199

210200
template <>

ydb/core/change_exchange/change_exchange.cpp

+7-11
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,5 @@
11
#include "change_exchange.h"
22

3-
#include <util/string/builder.h>
4-
#include <util/string/join.h>
5-
63
namespace NKikimr::NChangeExchange {
74

85
/// TEvEnqueueRecords
@@ -99,15 +96,14 @@ TEvChangeExchange::TEvRecords::TEvRecords(TChangeRecordVector&& records)
9996
{
10097
}
10198

102-
10399
TString TEvChangeExchange::TEvRecords::ToString() const {
104-
return std::visit(
105-
[&](auto& records){
106-
return TStringBuilder() << ToStringHeader() << " {"
107-
<< " Records " << ((TBaseChangeRecordContainer*)records.get())->Out()
108-
<< " }";
109-
},
110-
Records);
100+
auto visitor = [&](auto& records){
101+
return TStringBuilder() << ToStringHeader() << " {"
102+
<< " Records " << reinterpret_cast<IChangeRecordContainer*>(records.get())->Out()
103+
<< " }";
104+
};
105+
106+
return std::visit(visitor, Records);
111107
}
112108

113109
/// TEvForgetRecords

ydb/core/change_exchange/change_exchange.h

+21-4
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,8 @@
77
#include <ydb/core/scheme/scheme_pathid.h>
88

99
#include <util/generic/vector.h>
10+
#include <util/string/builder.h>
11+
#include <util/string/join.h>
1012

1113
namespace NKikimr {
1214

@@ -22,12 +24,27 @@ namespace NBackup::NImpl {
2224
class TChangeRecord;
2325
}
2426

25-
struct TBaseChangeRecordContainer {
26-
virtual ~TBaseChangeRecordContainer() = default;
27-
virtual TString Out() = 0;
27+
struct IChangeRecordContainer {
28+
virtual ~IChangeRecordContainer() = default;
29+
virtual TString Out() const = 0;
2830
};
2931

30-
template <class T>
32+
template <typename T>
33+
struct TBaseChangeRecordContainer: public IChangeRecordContainer {
34+
TVector<typename T::TPtr> Records;
35+
36+
TBaseChangeRecordContainer() = default;
37+
38+
explicit TBaseChangeRecordContainer(TVector<typename T::TPtr>&& records)
39+
: Records(std::move(records))
40+
{}
41+
42+
TString Out() const override {
43+
return TStringBuilder() << "[" << JoinSeq(",", Records) << "]";
44+
}
45+
};
46+
47+
template <typename T>
3148
struct TChangeRecordContainer {};
3249

3350
}

ydb/core/change_exchange/change_record.h

+5-3
Original file line numberDiff line numberDiff line change
@@ -6,10 +6,10 @@
66

77
namespace NKikimr {
88

9-
template <class TChangeRecord>
9+
template <typename TChangeRecord>
1010
struct TChangeRecordBuilderTrait;
1111

12-
template <class TChangeRecord>
12+
template <typename TChangeRecord>
1313
struct TChangeRecordBuilderContextTrait {};
1414

1515
} // namespace NKikimr
@@ -45,9 +45,11 @@ class IChangeRecord: public TThrRefBase {
4545

4646
virtual TString ToString() const = 0;
4747
virtual void Out(IOutputStream& out) const = 0;
48+
4849
}; // IChangeRecord
4950

50-
template <typename T, typename TDerived> class TChangeRecordBuilder;
51+
template <typename T, typename TDerived>
52+
class TChangeRecordBuilder;
5153

5254
class TChangeRecordBase: public IChangeRecord {
5355
template <typename T, typename TDerived> friend class TChangeRecordBuilder;

ydb/core/change_exchange/change_sender_common_ops.h

+1-1
Original file line numberDiff line numberDiff line change
@@ -76,7 +76,7 @@ template <class TChangeRecord>
7676
class TBaseChangeSender {
7777
using TIncompleteRecord = TEvChangeExchange::TEvRequestRecords::TRecordInfo;
7878
// we need this to safely cast and call Out on a container
79-
static_assert(std::derived_from<TChangeRecordContainer<TChangeRecord>, TBaseChangeRecordContainer>);
79+
static_assert(std::derived_from<TChangeRecordContainer<TChangeRecord>, IChangeRecordContainer>);
8080

8181
struct TEnqueuedRecord: TIncompleteRecord {
8282
bool ReEnqueued = false;

ydb/core/tx/datashard/change_record.h

+2-12
Original file line numberDiff line numberDiff line change
@@ -129,19 +129,9 @@ namespace NKikimr {
129129

130130
template <>
131131
struct TChangeRecordContainer<NDataShard::TChangeRecord>
132-
: public TBaseChangeRecordContainer
132+
: public TBaseChangeRecordContainer<NDataShard::TChangeRecord>
133133
{
134-
TChangeRecordContainer() = default;
135-
136-
explicit TChangeRecordContainer(TVector<NDataShard::TChangeRecord::TPtr>&& records)
137-
: Records(std::move(records))
138-
{}
139-
140-
TVector<NDataShard::TChangeRecord::TPtr> Records;
141-
142-
TString Out() override {
143-
return TStringBuilder() << "[" << JoinSeq(",", Records) << "]";
144-
}
134+
using TBaseChangeRecordContainer<NDataShard::TChangeRecord>::TBaseChangeRecordContainer;
145135
};
146136

147137
}

ydb/core/tx/replication/service/json_change_record.cpp

-5
Original file line numberDiff line numberDiff line change
@@ -107,11 +107,6 @@ void TChangeRecord::Serialize(NKikimrTxDataShard::TEvApplyReplicationChanges_TCh
107107
}
108108
}
109109

110-
void TChangeRecord::Serialize(NKikimrTxDataShard::TEvApplyReplicationChanges_TChange& record) const {
111-
TSerializationContext ctx;
112-
Serialize(record, ctx);
113-
}
114-
115110
TConstArrayRef<TCell> TChangeRecord::GetKey(TMemoryPool& pool) const {
116111
if (!Key) {
117112
TString error;

ydb/core/tx/replication/service/json_change_record.h

+2-13
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,6 @@ class TChangeRecord: public NChangeExchange::TChangeRecordBase {
4141
TString GetSourceId() const;
4242

4343
void Serialize(NKikimrTxDataShard::TEvApplyReplicationChanges_TChange& record, TSerializationContext& ctx) const;
44-
void Serialize(NKikimrTxDataShard::TEvApplyReplicationChanges_TChange& record) const;
4544

4645
TConstArrayRef<TCell> GetKey(TMemoryPool& pool) const;
4746
TConstArrayRef<TCell> GetKey() const;
@@ -84,19 +83,9 @@ namespace NKikimr {
8483

8584
template <>
8685
struct TChangeRecordContainer<NReplication::NService::TChangeRecord>
87-
: public TBaseChangeRecordContainer
86+
: public TBaseChangeRecordContainer<NReplication::NService::TChangeRecord>
8887
{
89-
TChangeRecordContainer() = default;
90-
91-
explicit TChangeRecordContainer(TVector<NReplication::NService::TChangeRecord::TPtr>&& records)
92-
: Records(std::move(records))
93-
{}
94-
95-
TVector<NReplication::NService::TChangeRecord::TPtr> Records;
96-
97-
TString Out() override {
98-
return TStringBuilder() << "[" << JoinSeq(",", Records) << "]";
99-
}
88+
using TBaseChangeRecordContainer<NReplication::NService::TChangeRecord>::TBaseChangeRecordContainer;
10089
};
10190

10291
template <>

0 commit comments

Comments
 (0)