1 // -*- mode:C++; tab-width:8; c-basic-offset:2; indent-tabs-mode:t -*-
2 // vim: ts=8 sw=2 smarttab
4 #ifndef CEPH_MDS_METRICS_H
5 #define CEPH_MDS_METRICS_H
7 #include "messages/MMDSOp.h"
8 #include "mds/MDSPerfMetricTypes.h"
10 class MMDSMetrics final
: public MMDSOp
{
12 static constexpr int HEAD_VERSION
= 1;
13 static constexpr int COMPAT_VERSION
= 1;
15 // metrics messsage (client -> metrics map, rank, etc..)
16 metrics_message_t metrics_message
;
19 MMDSMetrics() : MMDSOp(MSG_MDS_METRICS
, HEAD_VERSION
, COMPAT_VERSION
) {
21 MMDSMetrics(metrics_message_t metrics_message
)
22 : MMDSOp(MSG_MDS_METRICS
, HEAD_VERSION
, COMPAT_VERSION
),
23 metrics_message(metrics_message
) {
25 ~MMDSMetrics() final
{}
28 std::string_view
get_type_name() const override
{
32 void print(std::ostream
&out
) const override
{
33 out
<< "mds_metrics from rank=" << metrics_message
.rank
<< " carrying "
34 << metrics_message
.client_metrics_map
.size() << " metric updates";
37 void encode_payload(uint64_t features
) override
{
39 encode(metrics_message
, payload
, features
);
42 void decode_payload() override
{
44 auto iter
= payload
.cbegin();
45 decode(metrics_message
, iter
);
49 template<class T
, typename
... Args
>
50 friend boost::intrusive_ptr
<T
> ceph::make_message(Args
&&... args
);
51 template<class T
, typename
... Args
>
52 friend MURef
<T
> crimson::make_message(Args
&&... args
);
55 #endif // CEPH_MDS_METRICS_H