@@ -52,53 +52,85 @@ struct TEvPrivate {
5252 TString ToString () const override ;
5353 };
5454
55- struct TEvCreateStreamResult : public TEventLocal <TEvCreateStreamResult, EvCreateStreamResult> {
55+ template <typename TDerived, ui32 EventType>
56+ struct TGenericYdbProxyResult : public TEventLocal <TDerived, EventType> {
57+ using TBase = TGenericYdbProxyResult<TDerived, EventType>;
58+
5659 const ui64 ReplicationId;
5760 const ui64 TargetId;
5861 const NYdb::TStatus Status;
5962
60- explicit TEvCreateStreamResult (ui64 rid, ui64 tid, NYdb::TStatus&& status);
61- TString ToString () const override ;
63+ explicit TGenericYdbProxyResult (ui64 rid, ui64 tid, NYdb::TStatus&& status)
64+ : ReplicationId(rid)
65+ , TargetId(tid)
66+ , Status(std::move(status))
67+ {
68+ }
69+
70+ TString ToString () const override {
71+ return TStringBuilder () << this ->ToStringHeader () << " {"
72+ << " ReplicationId: " << ReplicationId
73+ << " TargetId: " << TargetId
74+ << " Status: " << Status.GetStatus ()
75+ << " Issues: " << Status.GetIssues ().ToOneLineString ()
76+ << " }" ;
77+ }
78+
79+ bool IsSuccess () const {
80+ return Status.IsSuccess ();
81+ }
82+ };
6283
63- bool IsSuccess () const ;
84+ struct TEvCreateStreamResult : public TGenericYdbProxyResult <TEvCreateStreamResult, EvCreateStreamResult> {
85+ using TBase::TBase;
6486 };
6587
66- struct TEvCreateDstResult : public TEventLocal <TEvCreateDstResult, EvCreateDstResult> {
88+ struct TEvDropStreamResult : public TGenericYdbProxyResult <TEvDropStreamResult, EvDropStreamResult> {
89+ using TBase::TBase;
90+ };
91+
92+ template <typename TDerived, ui32 EventType>
93+ struct TGenericSchemeResult : public TEventLocal <TDerived, EventType> {
94+ using TBase = TGenericSchemeResult<TDerived, EventType>;
95+
6796 const ui64 ReplicationId;
6897 const ui64 TargetId;
69- const TPathId DstPathId;
7098 const NKikimrScheme::EStatus Status;
7199 const TString Error;
72100
73- explicit TEvCreateDstResult (ui64 rid, ui64 tid, const TPathId& dstPathId);
74- explicit TEvCreateDstResult (ui64 rid, ui64 tid, NKikimrScheme::EStatus status, const TString& error);
75- TString ToString () const override ;
76-
77- bool IsSuccess () const ;
101+ explicit TGenericSchemeResult (ui64 rid, ui64 tid, NKikimrScheme::EStatus status, const TString& error = {})
102+ : ReplicationId(rid)
103+ , TargetId(tid)
104+ , Status(status)
105+ , Error(error)
106+ {
107+ }
108+
109+ TString ToStringBody () const {
110+ return TStringBuilder ()
111+ << " ReplicationId: " << ReplicationId
112+ << " TargetId: " << TargetId
113+ << " Status: " << NKikimrScheme::EStatus_Name (Status)
114+ << " Error: " << Error;
115+ }
116+
117+ bool IsSuccess () const {
118+ return Status == NKikimrScheme::StatusSuccess;
119+ }
78120 };
79121
80- struct TEvDropStreamResult : public TEventLocal <TEvDropStreamResult, EvDropStreamResult> {
81- const ui64 ReplicationId;
82- const ui64 TargetId;
83- const NYdb::TStatus Status;
122+ struct TEvCreateDstResult : public TGenericSchemeResult <TEvCreateDstResult, EvCreateDstResult> {
123+ const TPathId DstPathId;
84124
85- explicit TEvDropStreamResult (ui64 rid, ui64 tid, NYdb::TStatus&& status);
125+ explicit TEvCreateDstResult (ui64 rid, ui64 tid, const TPathId& dstPathId);
126+ explicit TEvCreateDstResult (ui64 rid, ui64 tid, NKikimrScheme::EStatus status, const TString& error);
86127 TString ToString () const override ;
87-
88- bool IsSuccess () const ;
89128 };
90129
91- struct TEvDropDstResult : public TEventLocal <TEvDropDstResult, EvDropDstResult> {
92- const ui64 ReplicationId;
93- const ui64 TargetId;
94- const NKikimrScheme::EStatus Status;
95- const TString Error;
96-
130+ struct TEvDropDstResult : public TGenericSchemeResult <TEvDropDstResult, EvDropDstResult> {
97131 explicit TEvDropDstResult (ui64 rid, ui64 tid,
98132 NKikimrScheme::EStatus status = NKikimrScheme::StatusSuccess, const TString& error = {});
99133 TString ToString () const override ;
100-
101- bool IsSuccess () const ;
102134 };
103135
104136 struct TEvDropReplication : public TEventLocal <TEvDropReplication, EvDropReplication> {
0 commit comments