MQTTPacket.h
Go to the documentation of this file.
1 /*******************************************************************************
2  * Copyright (c) 2009, 2020 IBM Corp.
3  *
4  * All rights reserved. This program and the accompanying materials
5  * are made available under the terms of the Eclipse Public License v2.0
6  * and Eclipse Distribution License v1.0 which accompany this distribution.
7  *
8  * The Eclipse Public License is available at
9  * https://www.eclipse.org/legal/epl-2.0/
10  * and the Eclipse Distribution License is available at
11  * http://www.eclipse.org/org/documents/edl-v10.php.
12  *
13  * Contributors:
14  * Ian Craggs - initial API and implementation and/or initial documentation
15  * Ian Craggs, Allan Stockdill-Mander - SSL updates
16  * Ian Craggs - MQTT 3.1.1 support
17  * Ian Craggs - big endian Linux reversed definition
18  * Ian Craggs - MQTT 5.0 support
19  *******************************************************************************/
20 
21 #if !defined(MQTTPACKET_H)
22 #define MQTTPACKET_H
23 
24 #include "Socket.h"
25 #if defined(OPENSSL)
26 #include "SSLSocket.h"
27 #endif
28 #include "LinkedList.h"
29 #include "Clients.h"
30 
31 typedef unsigned int bool;
32 typedef void* (*pf)(int, unsigned char, char*, size_t);
33 
34 #include "MQTTProperties.h"
35 #include "MQTTReasonCodes.h"
36 
37 enum errors
38 {
43 };
44 
45 
47 {
51 };
52 
53 #if defined(__linux__)
54 #include <endian.h>
55 #if __BYTE_ORDER == __BIG_ENDIAN
56  #define REVERSED 1
57 #endif
58 #endif
59 
63 typedef union
64 {
65  /*unsigned*/ char byte;
66 #if defined(REVERSED)
67  struct
68  {
69  unsigned int type : 4;
70  bool dup : 1;
71  unsigned int qos : 2;
72  bool retain : 1;
73  } bits;
74 #else
75  struct
76  {
77  bool retain : 1;
78  unsigned int qos : 2;
79  bool dup : 1;
80  unsigned int type : 4;
81  } bits;
82 #endif
83 } Header;
84 
85 
89 typedef struct
90 {
92  union
93  {
94  unsigned char all;
95 #if defined(REVERSED)
96  struct
97  {
98  bool username : 1;
99  bool password : 1;
100  bool willRetain : 1;
101  unsigned int willQoS : 2;
102  bool will : 1;
103  bool cleanstart : 1;
104  int : 1;
105  } bits;
106 #else
107  struct
108  {
109  int : 1;
110  bool cleanstart : 1;
111  bool will : 1;
112  unsigned int willQoS : 2;
113  bool willRetain : 1;
114  bool password : 1;
115  bool username : 1;
116  } bits;
117 #endif
118  } flags;
120  char *Protocol,
121  *clientID,
122  *willTopic,
123  *willMsg;
126  unsigned char version;
127 } Connect;
128 
129 
133 typedef struct
134 {
136  union
137  {
138  unsigned char all;
139 #if defined(REVERSED)
140  struct
141  {
142  unsigned int reserved : 7;
143  bool sessionPresent : 1;
144  } bits;
145 #else
146  struct
147  {
148  bool sessionPresent : 1;
149  unsigned int reserved : 7;
150  } bits;
151 #endif
152  } flags;
153  unsigned char rc;
154  unsigned int MQTTVersion;
156 } Connack;
157 
158 
162 typedef struct
163 {
165 } MQTTPacket;
166 
167 
171 typedef struct
172 {
174  int msgId;
178 } Suback;
179 
180 
184 typedef struct
185 {
187  int msgId;
191 } Unsuback;
192 
193 
197 typedef struct
198 {
200  char* topic;
201  int topiclen;
202  int msgId;
203  char* payload;
207  uint8_t mask[4];
208 } Publish;
209 
210 
214 typedef struct
215 {
217  int msgId;
218  unsigned char rc;
221 } Ack;
222 
223 typedef Ack Puback;
224 typedef Ack Pubrec;
225 typedef Ack Pubrel;
226 typedef Ack Pubcomp;
227 
228 int MQTTPacket_encode(char* buf, size_t length);
229 int MQTTPacket_decode(networkHandles* net, size_t* value);
230 int readInt(char** pptr);
231 char* readUTF(char** pptr, char* enddata);
232 unsigned char readChar(char** pptr);
233 void writeChar(char** pptr, char c);
234 void writeInt(char** pptr, int anInt);
235 void writeUTF(char** pptr, const char* string);
236 void writeData(char** pptr, const void* data, int datalen);
237 
238 const char* MQTTPacket_name(int ptype);
239 
240 void* MQTTPacket_Factory(int MQTTVersion, networkHandles* net, int* error);
241 int MQTTPacket_send(networkHandles* net, Header header, char* buffer, size_t buflen, int free, int MQTTVersion);
242 int MQTTPacket_sends(networkHandles* net, Header header, PacketBuffers* buffers, int MQTTVersion);
243 
244 void* MQTTPacket_header_only(int MQTTVersion, unsigned char aHeader, char* data, size_t datalen);
246 
247 void* MQTTPacket_publish(int MQTTVersion, unsigned char aHeader, char* data, size_t datalen);
248 void MQTTPacket_freePublish(Publish* pack);
249 int MQTTPacket_send_publish(Publish* pack, int dup, int qos, int retained, networkHandles* net, const char* clientID);
250 int MQTTPacket_send_puback(int MQTTVersion, int msgid, networkHandles* net, const char* clientID);
251 void* MQTTPacket_ack(int MQTTVersion, unsigned char aHeader, char* data, size_t datalen);
252 
253 void MQTTPacket_freeAck(Ack* pack);
254 void MQTTPacket_freeSuback(Suback* pack);
256 int MQTTPacket_send_pubrec(int MQTTVersion, int msgid, networkHandles* net, const char* clientID);
257 int MQTTPacket_send_pubrel(int MQTTVersion, int msgid, int dup, networkHandles* net, const char* clientID);
258 int MQTTPacket_send_pubcomp(int MQTTVersion, int msgid, networkHandles* net, const char* clientID);
259 
261 
262 void writeInt4(char** pptr, int anInt);
263 int readInt4(char** pptr);
264 void writeMQTTLenString(char** pptr, MQTTLenString lenstring);
265 int MQTTLenStringRead(MQTTLenString* lenstring, char** pptr, char* enddata);
266 int MQTTPacket_VBIlen(int rem_len);
267 int MQTTPacket_decodeBuf(char* buf, unsigned int* value);
268 
269 #include "MQTTPacketOut.h"
270 
271 #endif /* MQTTPACKET_H */
int MQTTPacket_decodeBuf(char *buf, unsigned int *value)
Definition: MQTTPacket.c:1052
int MQTTPacket_encode(char *buf, size_t length)
Definition: MQTTPacket.c:297
MQTTProperties properties
Definition: MQTTPacket.h:176
errors
Definition: MQTTPacket.h:37
int MQTTPacket_VBIlen(int rem_len)
Definition: MQTTPacket.c:990
Header header
Definition: MQTTPacket.h:135
MQTTProperties properties
Definition: MQTTPacket.h:155
enum MQTTPropertyCodes value
int msgId
Definition: MQTTPacket.h:174
char * topic
Definition: MQTTPacket.h:200
Ack Pubrel
Definition: MQTTPacket.h:225
int MQTTPacket_sends(networkHandles *net, Header header, PacketBuffers *buffers, int MQTTVersion)
Definition: MQTTPacket.c:250
MQTTReasonCodes
MQTTProperties props
Definition: paho_c_pub.c:54
void * MQTTPacket_header_only(int MQTTVersion, unsigned char aHeader, char *data, size_t datalen)
Definition: MQTTPacket.c:495
unsigned int MQTTVersion
Definition: MQTTPacket.h:154
int msgId
Definition: MQTTPacket.h:217
int msgId
Definition: MQTTPacket.h:202
int MQTTPacket_send_publish(Publish *pack, int dup, int qos, int retained, networkHandles *net, const char *clientID)
Definition: MQTTPacket.c:835
char byte
Definition: MQTTPacket.h:65
int readInt(char **pptr)
Definition: MQTTPacket.c:359
void MQTTPacket_freePublish(Publish *pack)
Definition: MQTTPacket.c:601
char * payload
Definition: MQTTPacket.h:203
int MQTTVersion
Definition: MQTTPacket.h:175
Ack Pubcomp
Definition: MQTTPacket.h:226
const char * MQTTPacket_name(int ptype)
Definition: MQTTPacket.c:65
void MQTTPacket_freeSuback(Suback *pack)
Definition: MQTTPacket.c:684
int MQTTPacket_send(networkHandles *net, Header header, char *buffer, size_t buflen, int free, int MQTTVersion)
Definition: MQTTPacket.c:190
unsigned int bool
Definition: MQTTPacket.h:31
static l_noret error(LoadState *S, const char *why)
Definition: lundump.c:40
int msgId
Definition: MQTTPacket.h:187
int topiclen
Definition: MQTTPacket.h:201
Header header
Definition: MQTTPacket.h:164
int readInt4(char **pptr)
Definition: MQTTPacket.c:945
unsigned char all
Definition: MQTTPacket.h:94
MQTTProperties properties
Definition: MQTTPacket.h:189
unsigned char readChar(char **pptr)
Definition: MQTTPacket.c:425
#define free(x)
Definition: Heap.h:55
void writeData(char **pptr, const void *data, int datalen)
Definition: MQTTPacket.c:479
void * MQTTPacket_Factory(int MQTTVersion, networkHandles *net, int *error)
Definition: MQTTPacket.c:103
char * readUTF(char **pptr, char *enddata)
Definition: MQTTPacket.c:413
void writeInt4(char **pptr, int anInt)
Definition: MQTTPacket.c:925
List * reasonCodes
Definition: MQTTPacket.h:190
void MQTTPacket_free_packet(MQTTPacket *pack)
Definition: MQTTPacket.c:905
int MQTTPacket_send_pubrel(int MQTTVersion, int msgid, int dup, networkHandles *net, const char *clientID)
Definition: MQTTPacket.c:743
char * username
Definition: test6.c:58
int payloadlen
Definition: MQTTPacket.h:204
Ack Puback
Definition: MQTTPacket.h:223
char * willTopic
Definition: MQTTPacket.h:120
msgTypes
Definition: MQTTPacket.h:46
void writeMQTTLenString(char **pptr, MQTTLenString lenstring)
Definition: MQTTPacket.c:954
unsigned char rc
Definition: MQTTPacket.h:218
int qos
Definition: test6.c:56
MQTTProperties properties
Definition: MQTTPacket.h:206
Header header
Definition: MQTTPacket.h:91
Header header
Definition: MQTTPacket.h:173
Header header
Definition: MQTTPacket.h:186
List * qoss
Definition: MQTTPacket.h:177
int MQTTPacket_decode(networkHandles *net, size_t *value)
Definition: MQTTPacket.c:325
unsigned char all
Definition: MQTTPacket.h:138
int MQTTLenStringRead(MQTTLenString *lenstring, char **pptr, char *enddata)
Definition: MQTTPacket.c:962
int MQTTPacket_send_disconnect(Clients *client, enum MQTTReasonCodes reason, MQTTProperties *props)
Definition: MQTTPacket.c:508
void MQTTPacket_freeUnsuback(Unsuback *pack)
Definition: MQTTPacket.c:700
MQTTAsync client
Definition: test6.c:276
int MQTTVersion
Definition: MQTTPacket.h:219
unsigned char rc
Definition: MQTTPacket.h:153
void writeInt(char **pptr, int anInt)
Definition: MQTTPacket.c:450
int keepAliveTimer
Definition: MQTTPacket.h:125
int MQTTVersion
Definition: MQTTPacket.h:188
struct Header Header
Ack Pubrec
Definition: MQTTPacket.h:224
int MQTTPacket_send_pubrec(int MQTTVersion, int msgid, networkHandles *net, const char *clientID)
Definition: MQTTPacket.c:722
MQTTClient c
Definition: test10.c:1656
int retained
Definition: test6.c:57
void * MQTTPacket_ack(int MQTTVersion, unsigned char aHeader, char *data, size_t datalen)
Definition: MQTTPacket.c:783
int MQTTPacket_send_pubcomp(int MQTTVersion, int msgid, networkHandles *net, const char *clientID)
Definition: MQTTPacket.c:763
unsigned char version
Definition: MQTTPacket.h:126
int MQTTPacket_send_puback(int MQTTVersion, int msgid, networkHandles *net, const char *clientID)
Definition: MQTTPacket.c:668
Header header
Definition: MQTTPacket.h:216
char * password
Definition: test6.c:59
void writeUTF(char **pptr, const char *string)
Definition: MQTTPacket.c:464
Header header
Definition: MQTTPacket.h:199
int MQTTVersion
Definition: MQTTPacket.h:205
MQTTProperties properties
Definition: MQTTPacket.h:220
void * MQTTPacket_publish(int MQTTVersion, unsigned char aHeader, char *data, size_t datalen)
Definition: MQTTPacket.c:553
dictionary data
Definition: mqtt_test.py:22
void MQTTPacket_freeAck(Ack *pack)
Definition: MQTTPacket.c:617
void writeChar(char **pptr, char c)
Definition: MQTTPacket.c:438


plotjuggler
Author(s): Davide Faconti
autogenerated on Sun Dec 6 2020 03:48:09