}
};
+template <class T>
+class PhasedOperationT : public TrackableOperationT<T> {
+ using base_t = TrackableOperationT<T>;
+protected:
+ using TrackableOperationT<T>::TrackableOperationT;
+
+ PipelineHandle handle;
+};
/**
* Maintains a set of lists of all active ops.
class PG;
class OSD;
-class ClientRequest final : public TrackableOperationT<ClientRequest>,
+class ClientRequest final : public PhasedOperationT<ClientRequest>,
private CommonClientRequest {
OSD &osd;
crimson::net::ConnectionRef conn;
Ref<MOSDOp> m;
OpInfo op_info;
- PipelineHandle handle;
public:
class ConnectionPipeline {
namespace crimson::osd {
-class InternalClientRequest : public TrackableOperationT<InternalClientRequest>,
+class InternalClientRequest : public PhasedOperationT<InternalClientRequest>,
private CommonClientRequest {
public:
explicit InternalClientRequest(Ref<PG> pg);
seastar::future<> do_process();
Ref<PG> pg;
- PipelineHandle handle;
OpInfo op_info;
};
class OSD;
class PG;
-class PGAdvanceMap : public TrackableOperationT<PGAdvanceMap> {
+class PGAdvanceMap : public PhasedOperationT<PGAdvanceMap> {
public:
static constexpr OperationTypeCode type = OperationTypeCode::pg_advance_map;
protected:
- PipelineHandle handle;
-
OSD &osd;
Ref<PG> pg;
class OSD;
class PG;
-class RepRequest final : public TrackableOperationT<RepRequest> {
+class RepRequest final : public PhasedOperationT<RepRequest> {
public:
class ConnectionPipeline {
OrderedExclusivePhase await_map = {
OSD &osd;
crimson::net::ConnectionRef conn;
Ref<MOSDRepOp> req;
- PipelineHandle handle;
};
}