TDME2  1.9.200
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
UDPClientMessage.h
Go to the documentation of this file.
1 #pragma once
2 
3 #include <memory>
4 #include <string>
5 
6 #include <tdme/tdme.h>
9 #include <tdme/utilities/Time.h>
10 
11 using std::string;
12 using std::unique_ptr;
13 
16 
17 /**
18  * UDP client message
19  * @author Andreas Drewke
20  */
22  friend UDPClient;
23 
24 public:
25  enum MessageType {
30  };
31 
32  /**
33  * Public destructor
34  */
35  inline ~UDPClientMessage() {
36  }
37 
38  /**
39  * @return time
40  */
41  inline const uint64_t getTime() {
42  return time;
43  }
44 
45  /**
46  * @return message type
47  */
48  inline const MessageType getMessageType() {
49  return messageType;
50  }
51 
52  /**
53  * @return client id
54  */
55  inline const uint32_t getClientId() {
56  return clientId;
57  }
58 
59  /**
60  * @return message id
61  */
62  inline const uint32_t getMessageId() {
63  return messageId;
64  }
65 
66  /**
67  * @return retry count
68  */
69  inline const uint8_t getRetryCount() {
70  return retries;
71  }
72 
73  /**
74  * @return retry time
75  */
76  const int64_t getRetryTime();
77 
78  /**
79  * @return udp client packet
80  */
81  inline const UDPPacket* getPacket() {
82  return packet.get();
83  }
84 
85 private:
86  /**
87  * Parse UDP client message
88  * @param message message raw data
89  * @param bytes byte count of message raw data
90  */
91  static UDPClientMessage* parse(const char message[512], uint16_t bytes);
92 
93  /**
94  * Public constructor
95  * @param messageType message type
96  * @param clientId client id
97  * @param messageId message id
98  * @param retries retries
99  * @param packet packet
100  */
101  UDPClientMessage(const MessageType messageType, const uint32_t clientId, const uint32_t messageId, const uint8_t retries, const UDPPacket* packet):
105  retries(retries),
106  packet(unique_ptr<const UDPPacket>(packet)),
107  time(Time::getCurrentMillis())
108  {
109  // no op
110  }
111 
112  /**
113  * Generate datagram
114  * @param message message
115  * @param bytes bytes
116  */
117  void generate(char message[512], uint16_t& bytes);
118 
119  /**
120  * Mark message to be resend with increased retry count
121  */
122  inline void retry() {
123  retries++;
124  }
125 
126  //
127  long time;
128  uint8_t retries;
130  uint32_t clientId;
131  uint32_t messageId;
132  unique_ptr<const UDPPacket> packet;
133 };
UDPClientMessage(const MessageType messageType, const uint32_t clientId, const uint32_t messageId, const uint8_t retries, const UDPPacket *packet)
Public constructor.
void retry()
Mark message to be resend with increased retry count.
static UDPClientMessage * parse(const char message[512], uint16_t bytes)
Parse UDP client message.
unique_ptr< const UDPPacket > packet
void generate(char message[512], uint16_t &bytes)
Generate datagram.
Time utility class.
Definition: Time.h:20