@@ -97,11 +97,10 @@ class PeeringEvent : public PhasedOperationT<T> {
9797 ShardServices &shard_services, Ref<PG> pg);
9898};
9999
100- class RemotePeeringEvent : public PeeringEvent <RemotePeeringEvent> {
100+ class RemotePeeringEvent :
101+ public PeeringEvent<RemotePeeringEvent>,
102+ public RemoteOperation {
101103protected:
102- crimson::net::ConnectionRef l_conn;
103- crimson::net::ConnectionXcoreRef r_conn;
104-
105104 // must be after conn due to ConnectionPipeline's life-time
106105 PipelineHandle handle;
107106
@@ -117,7 +116,7 @@ class RemotePeeringEvent : public PeeringEvent<RemotePeeringEvent> {
117116 template <typename ... Args>
118117 RemotePeeringEvent (crimson::net::ConnectionRef conn, Args&&... args) :
119118 PeeringEvent (std::forward<Args>(args)...),
120- l_conn ( conn)
119+ RemoteOperation (std::move( conn) )
121120 {}
122121
123122 std::tuple<
@@ -145,33 +144,6 @@ class RemotePeeringEvent : public PeeringEvent<RemotePeeringEvent> {
145144 ConnectionPipeline &get_connection_pipeline ();
146145
147146 PerShardPipeline &get_pershard_pipeline (ShardServices &);
148-
149- crimson::net::Connection &get_local_connection () {
150- assert (l_conn);
151- assert (!r_conn);
152- return *l_conn;
153- };
154-
155- crimson::net::Connection &get_foreign_connection () {
156- assert (r_conn);
157- assert (!l_conn);
158- return *r_conn;
159- };
160-
161- crimson::net::ConnectionFFRef prepare_remote_submission () {
162- assert (l_conn);
163- assert (!r_conn);
164- auto ret = seastar::make_foreign (std::move (l_conn));
165- l_conn.reset ();
166- return ret;
167- }
168-
169- void finish_remote_submission (crimson::net::ConnectionFFRef conn) {
170- assert (conn);
171- assert (!l_conn);
172- assert (!r_conn);
173- r_conn = make_local_shared_foreign (std::move (conn));
174- }
175147};
176148
177149class LocalPeeringEvent final : public PeeringEvent<LocalPeeringEvent> {
0 commit comments