]> git.proxmox.com Git - ceph.git/blob - ceph/src/crimson/osd/osd_operations/replicated_request.h
import quincy beta 17.1.0
[ceph.git] / ceph / src / crimson / osd / osd_operations / replicated_request.h
1 // -*- mode:C++; tab-width:8; c-basic-offset:2; indent-tabs-mode:t -*-
2 // vim: ts=8 sw=2 smarttab
3
4 #pragma once
5
6 #include "crimson/net/Connection.h"
7 #include "crimson/osd/osd_operation.h"
8 #include "crimson/common/type_helpers.h"
9
10 class MOSDRepOp;
11
12 namespace ceph {
13 class Formatter;
14 }
15
16 namespace crimson::osd {
17
18 class OSD;
19 class PG;
20
21 class RepRequest final : public OperationT<RepRequest> {
22 public:
23 class ConnectionPipeline {
24 OrderedExclusivePhase await_map = {
25 "RepRequest::ConnectionPipeline::await_map"
26 };
27 OrderedExclusivePhase get_pg = {
28 "RepRequest::ConnectionPipeline::get_pg"
29 };
30 friend RepRequest;
31 };
32 class PGPipeline {
33 OrderedExclusivePhase await_map = {
34 "RepRequest::PGPipeline::await_map"
35 };
36 OrderedExclusivePhase process = {
37 "RepRequest::PGPipeline::process"
38 };
39 friend RepRequest;
40 };
41 static constexpr OperationTypeCode type = OperationTypeCode::replicated_request;
42 RepRequest(OSD&, crimson::net::ConnectionRef&&, Ref<MOSDRepOp>&&);
43
44 void print(std::ostream &) const final;
45 void dump_detail(ceph::Formatter* f) const final;
46 seastar::future<> start();
47
48 private:
49 ConnectionPipeline &cp();
50 PGPipeline &pp(PG &pg);
51
52 OSD &osd;
53 crimson::net::ConnectionRef conn;
54 Ref<MOSDRepOp> req;
55 PipelineHandle handle;
56 };
57
58 }