s-net-Tools
SnetPeerStatistic.h
Go to the documentation of this file.
1 
22 #ifndef SNET_PEER_STATISTIC_H
23 #define SNET_PEER_STATISTIC_H
24 
25 #include <vector>
26 #include "SnetAppMessage.h"
27 
29 public:
30  SnetPeerStatistic(): SnetAppMessage(), m_RemoteSeed(0), m_LocalSeed(0), m_LocalGeneration(0), m_AmountOfPackets(0) {}
31 
32  // Getters
33  uint32_t GetRemoteSeed() const { return m_RemoteSeed; }
34  uint32_t GetLocalSeed() const { return m_LocalSeed; }
35  uint32_t GetLocalGeneration() const { return m_LocalGeneration; }
36  uint16_t GetAmountOfPackets() const { return m_AmountOfPackets; }
37 
38  // Serializer
39  std::vector<unsigned char> Serialize() const {
40  std::vector<unsigned char> l_Buffer(SnetAppMessage::Serialize());
41  l_Buffer.emplace_back((m_RemoteSeed & 0xFF000000) >> 24);
42  l_Buffer.emplace_back((m_RemoteSeed & 0x00FF0000) >> 16);
43  l_Buffer.emplace_back((m_RemoteSeed & 0x0000FF00) >> 8);
44  l_Buffer.emplace_back (m_RemoteSeed & 0x000000FF);
45  l_Buffer.emplace_back((m_LocalSeed & 0xFF000000) >> 24);
46  l_Buffer.emplace_back((m_LocalSeed & 0x00FF0000) >> 16);
47  l_Buffer.emplace_back((m_LocalSeed & 0x0000FF00) >> 8);
48  l_Buffer.emplace_back (m_LocalSeed & 0x000000FF);
49  l_Buffer.emplace_back((m_LocalGeneration & 0x00FF0000) >> 16);
50  l_Buffer.emplace_back((m_LocalGeneration & 0x0000FF00) >> 8);
51  l_Buffer.emplace_back (m_LocalGeneration & 0x000000FF);
52  l_Buffer.emplace_back((m_AmountOfPackets & 0x0000FF00) >> 8);
53  l_Buffer.emplace_back (m_AmountOfPackets & 0x000000FF);
54  return l_Buffer;
55  }
56 
57  // Deserializer
58  size_t Deserialize(const std::vector<unsigned char>& a_Buffer) {
59  size_t l_Offset = SnetAppMessage::Deserialize(a_Buffer);
60  if (l_Offset) {
61  // Checks
62  if ((a_Buffer.size() - l_Offset) != 13) {
63  // Invalid payload size
64  l_Offset = 0;
65  } else {
66  // Parsing
67  m_RemoteSeed += (uint32_t(a_Buffer[l_Offset + 0]) << 24);
68  m_RemoteSeed += (uint32_t(a_Buffer[l_Offset + 1]) << 16);
69  m_RemoteSeed += (uint32_t(a_Buffer[l_Offset + 2]) << 8);
70  m_RemoteSeed += (uint32_t(a_Buffer[l_Offset + 3]));
71  m_LocalSeed += (uint32_t(a_Buffer[l_Offset + 4]) << 24);
72  m_LocalSeed += (uint32_t(a_Buffer[l_Offset + 5]) << 16);
73  m_LocalSeed += (uint32_t(a_Buffer[l_Offset + 6]) << 8);
74  m_LocalSeed += (uint32_t(a_Buffer[l_Offset + 7]));
75  m_LocalGeneration += (uint32_t(a_Buffer[l_Offset + 8]) << 16);
76  m_LocalGeneration += (uint32_t(a_Buffer[l_Offset + 9]) << 8);
77  m_LocalGeneration += (uint32_t(a_Buffer[l_Offset + 10]));
78  m_AmountOfPackets += (uint16_t(a_Buffer[l_Offset + 11]) << 8);
79  m_AmountOfPackets += (uint16_t(a_Buffer[l_Offset + 12]));
80  l_Offset += 13;
81  } // else
82  } // if
83 
84  return l_Offset;
85  }
86 
87 private:
88  // Members
89  uint32_t m_RemoteSeed;
90  uint32_t m_LocalSeed;
91  uint32_t m_LocalGeneration;
92  uint16_t m_AmountOfPackets;
93 };
94 
95 #endif // SNET_PEER_STATISTICS_H
uint32_t GetRemoteSeed() const
Copyright (c) 2016, Florian Evers, florian-evers@gmx.de All rights reserved.
size_t Deserialize(const std::vector< unsigned char > &a_Buffer)
uint32_t GetLocalSeed() const
std::vector< unsigned char > Serialize() const
size_t Deserialize(const std::vector< unsigned char > &a_Buffer)
uint16_t GetAmountOfPackets() const
std::vector< unsigned char > Serialize() const
uint32_t GetLocalGeneration() const