summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGreg Farnum <greg@inktank.com>2013-10-02 15:35:53 -0700
committerGreg Farnum <greg@inktank.com>2013-10-02 15:35:53 -0700
commit2723a09aba868b9357a042438bc26bc4fd6ef94f (patch)
tree43eed8edf64bcc76f538386dbcd175257d7b2588
parent7973d44c1ad0eb3c1af2a14834bf173a42b1a397 (diff)
downloadceph-2723a09aba868b9357a042438bc26bc4fd6ef94f.tar.gz
TrackedOp: template OpTracker on only T[::Ref] (ie, OpRequest[::Ref])
Signed-off-by: Greg Farnum <greg@inktank.com>
-rw-r--r--src/common/TrackedOp.h14
-rw-r--r--src/osd/OSD.cc2
-rw-r--r--src/osd/OpRequest.h5
3 files changed, 11 insertions, 10 deletions
diff --git a/src/common/TrackedOp.h b/src/common/TrackedOp.h
index 3344301c7c8..c098c4b0170 100644
--- a/src/common/TrackedOp.h
+++ b/src/common/TrackedOp.h
@@ -91,19 +91,19 @@ public:
assert(ops_in_flight.empty());
}
- template <typename T, typename TRef>
- TRef create_request(Message *ref)
+ template <typename T>
+ typename T::Ref create_request(Message *ref)
{
- TRef retval(new T(ref, this),
- RemoveOnDelete(this));
-
+ typename T::Ref retval(new T(ref, this),
+ RemoveOnDelete(this));
+
_mark_event(retval.get(), "header_read", ref->get_recv_stamp());
_mark_event(retval.get(), "throttled", ref->get_throttle_stamp());
_mark_event(retval.get(), "all_read", ref->get_recv_complete_stamp());
_mark_event(retval.get(), "dispatched", ref->get_dispatch_stamp());
-
+
retval->init_from_message();
-
+
return retval;
}
};
diff --git a/src/osd/OSD.cc b/src/osd/OSD.cc
index 2e933b38bf0..8150d9b3cd9 100644
--- a/src/osd/OSD.cc
+++ b/src/osd/OSD.cc
@@ -4724,7 +4724,7 @@ void OSD::_dispatch(Message *m)
default:
{
- OpRequestRef op = op_tracker.create_request<OpRequest, OpRequestRef>(m);
+ OpRequestRef op = op_tracker.create_request<OpRequest>(m);
op->mark_event("waiting_for_osdmap");
// no map? starting up?
if (!osdmap) {
diff --git a/src/osd/OpRequest.h b/src/osd/OpRequest.h
index 88c4e7d4bc2..6131aae0d2d 100644
--- a/src/osd/OpRequest.h
+++ b/src/osd/OpRequest.h
@@ -143,9 +143,10 @@ public:
}
void init_from_message();
-};
-typedef std::tr1::shared_ptr<OpRequest> OpRequestRef;
+ typedef std::tr1::shared_ptr<OpRequest> Ref;
+};
+typedef OpRequest::Ref OpRequestRef;
#endif /* OPREQUEST_H_ */