1 /******************************************************************************* 2 * Copyright (c) 2017, 2018 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 v1.0 6 * and Eclipse Distribution License v1.0 which accompany this distribution. 7 * 8 * The Eclipse Public License is available at 9 * http://www.eclipse.org/legal/epl-v10.html 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 *******************************************************************************/ 16 17 #if !defined(MQTTREASONCODES_H) 18 #define MQTTREASONCODES_H 19 20 /** The MQTT V5 one byte reason code */ 21 enum MQTTReasonCodes { 22 MQTTREASONCODE_SUCCESS = 0, 23 MQTTREASONCODE_NORMAL_DISCONNECTION = 0, 24 MQTTREASONCODE_GRANTED_QOS_0 = 0, 25 MQTTREASONCODE_GRANTED_QOS_1 = 1, 26 MQTTREASONCODE_GRANTED_QOS_2 = 2, 27 MQTTREASONCODE_DISCONNECT_WITH_WILL_MESSAGE = 4, 28 MQTTREASONCODE_NO_MATCHING_SUBSCRIBERS = 16, 29 MQTTREASONCODE_NO_SUBSCRIPTION_FOUND = 17, 30 MQTTREASONCODE_CONTINUE_AUTHENTICATION = 24, 31 MQTTREASONCODE_RE_AUTHENTICATE = 25, 32 MQTTREASONCODE_UNSPECIFIED_ERROR = 128, 33 MQTTREASONCODE_MALFORMED_PACKET = 129, 34 MQTTREASONCODE_PROTOCOL_ERROR = 130, 35 MQTTREASONCODE_IMPLEMENTATION_SPECIFIC_ERROR = 131, 36 MQTTREASONCODE_UNSUPPORTED_PROTOCOL_VERSION = 132, 37 MQTTREASONCODE_CLIENT_IDENTIFIER_NOT_VALID = 133, 38 MQTTREASONCODE_BAD_USER_NAME_OR_PASSWORD = 134, 39 MQTTREASONCODE_NOT_AUTHORIZED = 135, 40 MQTTREASONCODE_SERVER_UNAVAILABLE = 136, 41 MQTTREASONCODE_SERVER_BUSY = 137, 42 MQTTREASONCODE_BANNED = 138, 43 MQTTREASONCODE_SERVER_SHUTTING_DOWN = 139, 44 MQTTREASONCODE_BAD_AUTHENTICATION_METHOD = 140, 45 MQTTREASONCODE_KEEP_ALIVE_TIMEOUT = 141, 46 MQTTREASONCODE_SESSION_TAKEN_OVER = 142, 47 MQTTREASONCODE_TOPIC_FILTER_INVALID = 143, 48 MQTTREASONCODE_TOPIC_NAME_INVALID = 144, 49 MQTTREASONCODE_PACKET_IDENTIFIER_IN_USE = 145, 50 MQTTREASONCODE_PACKET_IDENTIFIER_NOT_FOUND = 146, 51 MQTTREASONCODE_RECEIVE_MAXIMUM_EXCEEDED = 147, 52 MQTTREASONCODE_TOPIC_ALIAS_INVALID = 148, 53 MQTTREASONCODE_PACKET_TOO_LARGE = 149, 54 MQTTREASONCODE_MESSAGE_RATE_TOO_HIGH = 150, 55 MQTTREASONCODE_QUOTA_EXCEEDED = 151, 56 MQTTREASONCODE_ADMINISTRATIVE_ACTION = 152, 57 MQTTREASONCODE_PAYLOAD_FORMAT_INVALID = 153, 58 MQTTREASONCODE_RETAIN_NOT_SUPPORTED = 154, 59 MQTTREASONCODE_QOS_NOT_SUPPORTED = 155, 60 MQTTREASONCODE_USE_ANOTHER_SERVER = 156, 61 MQTTREASONCODE_SERVER_MOVED = 157, 62 MQTTREASONCODE_SHARED_SUBSCRIPTIONS_NOT_SUPPORTED = 158, 63 MQTTREASONCODE_CONNECTION_RATE_EXCEEDED = 159, 64 MQTTREASONCODE_MAXIMUM_CONNECT_TIME = 160, 65 MQTTREASONCODE_SUBSCRIPTION_IDENTIFIERS_NOT_SUPPORTED = 161, 66 MQTTREASONCODE_WILDCARD_SUBSCRIPTIONS_NOT_SUPPORTED = 162 67 }; 68 69 #if defined(WIN32) || defined(WIN64) 70 #define DLLImport __declspec(dllimport) 71 #define DLLExport __declspec(dllexport) 72 #else 73 #define DLLImport extern 74 #define DLLExport __attribute__ ((visibility ("default"))) 75 #endif 76 77 /** 78 * Returns a printable string description of an MQTT V5 reason code. 79 * @param value an MQTT V5 reason code. 80 * @return the printable string description of the input reason code. 81 * NULL if the code was not found. 82 */ 83 DLLExport const char* MQTTReasonCode_toString(enum MQTTReasonCodes value); 84 85 #endif 86