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 "messages/MOSDPeeringOp.h"
7    	#include "osd/PGPeeringEvent.h"
8    	
9    	class MOSDPGInfo2 : public MOSDPeeringOp {
10   	private:
11   	  static constexpr int HEAD_VERSION = 1;
12   	  static constexpr int COMPAT_VERSION = 1;
13   	
14   	public:
15   	  spg_t spgid;
(1) Event member_decl: Class member declaration for "epoch_sent".
Also see events: [uninit_member][member_decl][uninit_member]
16   	  epoch_t epoch_sent;
(3) Event member_decl: Class member declaration for "min_epoch".
Also see events: [member_decl][uninit_member][uninit_member]
17   	  epoch_t min_epoch;
18   	  pg_info_t info;
19   	  std::optional<pg_lease_t> lease;
20   	  std::optional<pg_lease_ack_t> lease_ack;
21   	
22   	  spg_t get_spg() const override {
23   	    return spgid;
24   	  }
25   	  epoch_t get_map_epoch() const override {
26   	    return epoch_sent;
27   	  }
28   	  epoch_t get_min_epoch() const override {
29   	    return min_epoch;
30   	  }
31   	
32   	  PGPeeringEvent *get_event() override {
33   	    return new PGPeeringEvent(
34   	      epoch_sent,
35   	      min_epoch,
36   	      MInfoRec(
37   		pg_shard_t(get_source().num(), info.pgid.shard),
38   		info,
39   		epoch_sent,
40   		lease,
41   		lease_ack));
42   	  }
43   	
44   	  MOSDPGInfo2() : MOSDPeeringOp{MSG_OSD_PG_INFO2,
45   					  HEAD_VERSION, COMPAT_VERSION} {
46   	    set_priority(CEPH_MSG_PRIO_HIGH);
(2) Event uninit_member: Non-static class member "epoch_sent" is not initialized in this constructor nor in any functions that it calls.
(4) Event uninit_member: Non-static class member "min_epoch" is not initialized in this constructor nor in any functions that it calls.
Also see events: [member_decl][member_decl]
47   	  }
48   	  MOSDPGInfo2(
49   	    spg_t s,
50   	    pg_info_t q,
51   	    epoch_t sent,
52   	    epoch_t min,
53   	    std::optional<pg_lease_t> l,
54   	    std::optional<pg_lease_ack_t> la)
55   	    : MOSDPeeringOp{MSG_OSD_PG_INFO2, HEAD_VERSION, COMPAT_VERSION},
56   	      spgid(s),
57   	      epoch_sent(sent),
58   	      min_epoch(min),
59   	      info(q),
60   	      lease(l),
61   	      lease_ack(la) {
62   	    set_priority(CEPH_MSG_PRIO_HIGH);
63   	  }
64   	
65   	private:
66   	  ~MOSDPGInfo2() override {}
67   	
68   	public:
69   	  std::string_view get_type_name() const override {
70   	    return "pg_info2";
71   	  }
72   	  void inner_print(std::ostream& out) const override {
73   	    out << spgid << " " << info;
74   	  }
75   	
76   	  void encode_payload(uint64_t features) override {
77   	    using ceph::encode;
78   	    encode(spgid, payload);
79   	    encode(epoch_sent, payload);
80   	    encode(min_epoch, payload);
81   	    encode(info, payload);
82   	    encode(lease, payload);
83   	    encode(lease_ack, payload);
84   	  }
85   	  void decode_payload() override {
86   	    using ceph::decode;
87   	    auto p = payload.cbegin();
88   	    decode(spgid, p);
89   	    decode(epoch_sent, p);
90   	    decode(min_epoch, p);
91   	    decode(info, p);
92   	    decode(lease, p);
93   	    decode(lease_ack, p);
94   	  }
95   	private:
96   	  template<class T, typename... Args>
97   	  friend boost::intrusive_ptr<T> ceph::make_message(Args&&... args);
98   	};
99