Satellite-Gateway
GatewayClientDestroy.h
Go to the documentation of this file.
1 
24 #ifndef GATEWAY_CLIENT_DESTROY_H
25 #define GATEWAY_CLIENT_DESTROY_H
26 
27 #include "ConfigFrame.h"
28 #include <memory>
29 
31 public:
32  static GatewayClientDestroy Create(uint16_t a_ReferenceNbr) {
33  GatewayClientDestroy l_GatewayClientDestroy;
34  l_GatewayClientDestroy.m_ReferenceNbr = a_ReferenceNbr;
35  return l_GatewayClientDestroy;
36  }
37 
38  static std::shared_ptr<GatewayClientDestroy> CreateDeserializedFrame() {
39  auto l_GatewayClientDestroy(std::shared_ptr<GatewayClientDestroy>(new GatewayClientDestroy));
40  l_GatewayClientDestroy->m_eDeserialize = DESERIALIZE_BODY;
41  l_GatewayClientDestroy->m_BytesRemaining = 3; // Next: read body including the frame type byte
42  return l_GatewayClientDestroy;
43  }
44 
45  // Getter
46  uint16_t GetReferenceNbr() const {
47  assert(m_eDeserialize == DESERIALIZE_FULL);
48  return m_ReferenceNbr;
49  }
50 
51 private:
52  // Private CTOR
53  GatewayClientDestroy(): m_ReferenceNbr(0), m_eDeserialize(DESERIALIZE_FULL) {
54  }
55 
56  // Methods
57  E_CONFIG_FRAME GetConfigFrameType() const { return CONFIG_FRAME_GATEWAY_CLIENT_DESTROY; }
58 
59  // Serializer
60  const std::vector<unsigned char> Serialize() const {
61  assert(m_eDeserialize == DESERIALIZE_FULL);
62  std::vector<unsigned char> l_Buffer;
63  l_Buffer.emplace_back(CONFIG_FRAME_GATEWAY_CLIENT_DESTROY);
64  l_Buffer.emplace_back((m_ReferenceNbr >> 8) & 0xFF);
65  l_Buffer.emplace_back((m_ReferenceNbr >> 0) & 0xFF);
66  return l_Buffer;
67  }
68 
69  // Deserializer
70  bool Deserialize() {
71  // All requested bytes are available
72  switch (m_eDeserialize) {
73  case DESERIALIZE_BODY: {
74  // Deserialize the body including the frame type byte
75  assert(m_Buffer.size() == 3);
77  m_ReferenceNbr = ntohs(*(reinterpret_cast<const uint16_t*>(&m_Buffer[1])));
78  m_eDeserialize = DESERIALIZE_FULL;
79  break;
80  }
81  case DESERIALIZE_ERROR:
82  case DESERIALIZE_FULL:
83  default:
84  assert(false);
85  } // switch
86 
87  // No error
88  return true;
89  }
90 
91  // Members
92  uint16_t m_ReferenceNbr;
93  typedef enum {
94  DESERIALIZE_ERROR = 0,
95  DESERIALIZE_BODY = 1,
96  DESERIALIZE_FULL = 2
97  } E_DESERIALIZE;
98  E_DESERIALIZE m_eDeserialize;
99 };
100 
101 #endif // GATEWAY_CLIENT_DESTROY_H
E_CONFIG_FRAME
Definition: ConfigFrame.h:29
uint16_t GetReferenceNbr() const
static GatewayClientDestroy Create(uint16_t a_ReferenceNbr)
std::vector< unsigned char > m_Buffer
The buffer containing partly received frames or higher-layer payload.
Definition: Frame.h:154
static std::shared_ptr< GatewayClientDestroy > CreateDeserializedFrame()