TARAXA
packet_data.hpp
Go to the documentation of this file.
1 #pragma once
2 
3 #include <json/value.h>
4 #include <libp2p/Common.h>
5 
6 #include <chrono>
7 
9 
11 
12 class PacketData {
13  public:
14  using PacketId = uint64_t;
15  enum PacketPriority : size_t { High = 0, Mid, Low, Count };
16 
17  PacketData(SubprotocolPacketType type, const dev::p2p::NodeID& from_node_id, std::vector<unsigned char>&& bytes);
18  ~PacketData() = default;
19  PacketData(const PacketData&) = default;
20  PacketData(PacketData&&) = default;
21  PacketData& operator=(const PacketData&) = default;
23 
27  Json::Value getPacketDataJson() const;
28 
29  private:
34  static inline PacketPriority getPacketPriority(SubprotocolPacketType packet_type);
35 
36  // Packet bytes had to be copied here as dev::RLP does not own vector of bytes, it only "points to" it
37  std::vector<unsigned char> rlp_bytes_;
38 
39  public:
40  PacketId id_{0}; // Unique packet id (counter)
43  std::string type_str_;
47 };
48 
49 } // namespace taraxa::network::threadpool
Definition: RLP.h:56
Definition: packet_data.hpp:12
std::vector< unsigned char > rlp_bytes_
Definition: packet_data.hpp:37
PacketData & operator=(PacketData &&)=default
uint64_t PacketId
Definition: packet_data.hpp:14
PacketPriority
Definition: packet_data.hpp:15
@ Count
Definition: packet_data.hpp:15
@ Low
Definition: packet_data.hpp:15
@ High
Definition: packet_data.hpp:15
@ Mid
Definition: packet_data.hpp:15
dev::RLP rlp_
Definition: packet_data.hpp:46
SubprotocolPacketType type_
Definition: packet_data.hpp:42
dev::p2p::NodeID from_node_id_
Definition: packet_data.hpp:45
std::string type_str_
Definition: packet_data.hpp:43
static PacketPriority getPacketPriority(SubprotocolPacketType packet_type)
Definition: packet_data.cpp:19
PacketData & operator=(const PacketData &)=default
Json::Value getPacketDataJson() const
Definition: packet_data.cpp:33
PacketId id_
Definition: packet_data.hpp:40
std::chrono::steady_clock::time_point receive_time_
Definition: packet_data.hpp:41
PacketPriority priority_
Definition: packet_data.hpp:44
PacketData(const PacketData &)=default
PacketData(SubprotocolPacketType type, const dev::p2p::NodeID &from_node_id, std::vector< unsigned char > &&bytes)
Definition: packet_data.cpp:5
std::vector<::byte > bytes
Definition: Common.h:46
std::chrono::system_clock::time_point time_point
Definition: watches.hpp:12
Definition: node_stats.hpp:17
SubprotocolPacketType
SubprotocolPacketType is used in networking layer to differentiate packet types.
Definition: packet_types.hpp:12