BrainBlast/_software_lib/nanomq-0.22.10/include/nng/protocol/mqtt/mqtt.h

113 lines
2.8 KiB
C

//
// Copyright 2022 NanoMQ Team, Inc. <jaylin@emqx.io>
//
// This software is supplied under the terms of the MIT License, a
// copy of which should be located in the distribution where this
// file was obtained (LICENSE.txt). A copy of the license may also be
// found online at https://opensource.org/licenses/MIT.
//
#ifndef MQTT_PROTOCOL_H
#define MQTT_PROTOCOL_H
#define MQTT_PROTOCOL_NAME_v31 "MQIsdp"
#define MQTT_PROTOCOL_VERSION_v31 3
#define MQTT_PROTOCOL_NAME "MQTT"
#define MQTT_PROTOCOL_VERSION_v311 4
#define MQTT_PROTOCOL_VERSION_v5 5
/* NNG OPTs */
#define NANO_CONF "nano:conf"
/* Length defination */
// Maximum Packet Size of broker
#define NANO_MAX_RECV_PACKET_SIZE (2*1024*1024)
#define NANO_MIN_PACKET_LEN sizeof(uint8_t) * 8
#define NANO_CONNECT_PACKET_LEN sizeof(uint8_t) * 12
#define NANO_MIN_FIXED_HEADER_LEN sizeof(uint8_t) * 2
//flow control:how many QoS packet broker willing to process at same time.
#define NANO_MAX_QOS_PACKET 1024
#ifdef NANO_PACKET_SIZE
#define NNI_NANO_MAX_PACKET_SIZE sizeof(uint8_t) * NANO_PACKET_SIZE
#else
#define NNI_NANO_MAX_PACKET_SIZE sizeof(uint8_t) * 16
#endif
/* Error values */
enum err_t {
ERR_AUTH_CONTINUE = -4,
ERR_NO_SUBSCRIBERS = -3,
ERR_SUB_EXISTS = -2,
ERR_CONN_PENDING = -1,
ERR_SUCCESS = 0,
ERR_NOMEM = 1,
ERR_PROTOCOL = 2,
ERR_INVAL = 3,
ERR_NO_CONN = 4,
ERR_CONN_REFUSED = 5,
ERR_NOT_FOUND = 6,
ERR_CONN_LOST = 7,
ERR_TLS = 8,
ERR_PAYLOAD_SIZE = 9,
ERR_NOT_SUPPORTED = 10,
ERR_AUTH = 11,
ERR_ACL_DENIED = 12,
ERR_UNKNOWN = 13,
ERR_ERRNO = 14,
ERR_EAI = 15,
ERR_PROXY = 16,
ERR_PLUGIN_DEFER = 17,
ERR_MALFORMED_UTF8 = 18,
ERR_KEEPALIVE = 19,
ERR_LOOKUP = 20,
ERR_MALFORMED_PACKET = 21,
ERR_DUPLICATE_PROPERTY = 22,
ERR_TLS_HANDSHAKE = 23,
ERR_QOS_NOT_SUPPORTED = 24,
ERR_OVERSIZE_PACKET = 25,
ERR_OCSP = 26,
};
// mqtt5 macro
#define NMQ_RECEIVE_MAXIMUM_EXCEEDED 0X93
#define NMQ_PACKET_TOO_LARGE 0x95
#define NMQ_UNSEPECIFY_ERROR 0X80
#define NMQ_SERVER_UNAVAILABLE 0x88
#define NMQ_SERVER_BUSY 0x89
#define NMQ_SERVER_SHUTTING_DOWN 0x8B
#define NMQ_KEEP_ALIVE_TIMEOUT 0x8D
#define NMQ_AUTH_SUB_ERROR 0X87
// MQTT Control Packet types
typedef enum {
RESERVED = 0,
CONNECT = 1,
CONNACK = 2,
PUBLISH = 3,
PUBACK = 4,
PUBREC = 5,
PUBREL = 6,
PUBCOMP = 7,
SUBSCRIBE = 8,
SUBACK = 9,
UNSUBSCRIBE = 10,
UNSUBACK = 11,
PINGREQ = 12,
PINGRESP = 13,
DISCONNECT = 14,
AUTH = 15
} mqtt_control_packet_types;
//MQTTV5
typedef enum {
// 0 : V4 1: V5 5: V4 to V5 4: V5 to V4
MQTTV4 = 0,
MQTTV5 = 1,
MQTTV4_V5 = 2,
MQTTV5_V4 = 3,
} target_prover;
#endif