MQTTReasonCodes.c 4.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100
  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. #include "MQTTReasonCodes.h"
  17. #include "Heap.h"
  18. #include "StackTrace.h"
  19. #include <memory.h>
  20. #define ARRAY_SIZE(a) (sizeof(a) / sizeof(a[0]))
  21. static struct {
  22. enum MQTTReasonCodes value;
  23. const char* name;
  24. } nameToString[] =
  25. {
  26. {MQTTREASONCODE_SUCCESS, "SUCCESS"},
  27. {MQTTREASONCODE_NORMAL_DISCONNECTION, "Normal disconnection"},
  28. {MQTTREASONCODE_GRANTED_QOS_0, "Granted QoS 0"},
  29. {MQTTREASONCODE_GRANTED_QOS_1, "Granted QoS 1"},
  30. {MQTTREASONCODE_GRANTED_QOS_2, "Granted QoS 2"},
  31. {MQTTREASONCODE_DISCONNECT_WITH_WILL_MESSAGE, "Disconnect with Will Message"},
  32. {MQTTREASONCODE_NO_MATCHING_SUBSCRIBERS, "No matching subscribers"},
  33. {MQTTREASONCODE_NO_SUBSCRIPTION_FOUND, "No subscription found"},
  34. {MQTTREASONCODE_CONTINUE_AUTHENTICATION, "Continue authentication"},
  35. {MQTTREASONCODE_RE_AUTHENTICATE, "Re-authenticate"},
  36. {MQTTREASONCODE_UNSPECIFIED_ERROR, "Unspecified error"},
  37. {MQTTREASONCODE_MALFORMED_PACKET, "Malformed Packet"},
  38. {MQTTREASONCODE_PROTOCOL_ERROR, "Protocol error"},
  39. {MQTTREASONCODE_IMPLEMENTATION_SPECIFIC_ERROR, "Implementation specific error"},
  40. {MQTTREASONCODE_UNSUPPORTED_PROTOCOL_VERSION, "Unsupported Protocol Version"},
  41. {MQTTREASONCODE_CLIENT_IDENTIFIER_NOT_VALID, "Client Identifier not valid"},
  42. {MQTTREASONCODE_BAD_USER_NAME_OR_PASSWORD, "Bad User Name or Password"},
  43. {MQTTREASONCODE_NOT_AUTHORIZED, "Not authorized"},
  44. {MQTTREASONCODE_SERVER_UNAVAILABLE, "Server unavailable"},
  45. {MQTTREASONCODE_SERVER_BUSY, "Server busy"},
  46. {MQTTREASONCODE_BANNED, "Banned"},
  47. {MQTTREASONCODE_SERVER_SHUTTING_DOWN, "Server shutting down"},
  48. {MQTTREASONCODE_BAD_AUTHENTICATION_METHOD, "Bad authentication method"},
  49. {MQTTREASONCODE_KEEP_ALIVE_TIMEOUT, "Keep Alive timeout"},
  50. {MQTTREASONCODE_SESSION_TAKEN_OVER, "Session taken over"},
  51. {MQTTREASONCODE_TOPIC_FILTER_INVALID, "Topic filter invalid"},
  52. {MQTTREASONCODE_TOPIC_NAME_INVALID, "Topic name invalid"},
  53. {MQTTREASONCODE_PACKET_IDENTIFIER_IN_USE, "Packet Identifier in use"},
  54. {MQTTREASONCODE_PACKET_IDENTIFIER_NOT_FOUND, "Packet Identifier not found"},
  55. {MQTTREASONCODE_RECEIVE_MAXIMUM_EXCEEDED, "Receive Maximum exceeded"},
  56. {MQTTREASONCODE_TOPIC_ALIAS_INVALID, "Topic Alias invalid"},
  57. {MQTTREASONCODE_PACKET_TOO_LARGE, "Packet too large"},
  58. {MQTTREASONCODE_MESSAGE_RATE_TOO_HIGH, "Message rate too high"},
  59. {MQTTREASONCODE_QUOTA_EXCEEDED, "Quota exceeded"},
  60. {MQTTREASONCODE_ADMINISTRATIVE_ACTION, "Administrative action"},
  61. {MQTTREASONCODE_PAYLOAD_FORMAT_INVALID, "Payload format invalid"},
  62. {MQTTREASONCODE_RETAIN_NOT_SUPPORTED, "Retain not supported"},
  63. {MQTTREASONCODE_QOS_NOT_SUPPORTED, "QoS not supported"},
  64. {MQTTREASONCODE_USE_ANOTHER_SERVER, "Use another server"},
  65. {MQTTREASONCODE_SERVER_MOVED, "Server moved"},
  66. {MQTTREASONCODE_SHARED_SUBSCRIPTIONS_NOT_SUPPORTED, "Shared subscriptions not supported"},
  67. {MQTTREASONCODE_CONNECTION_RATE_EXCEEDED, "Connection rate exceeded"},
  68. {MQTTREASONCODE_MAXIMUM_CONNECT_TIME, "Maximum connect time"},
  69. {MQTTREASONCODE_SUBSCRIPTION_IDENTIFIERS_NOT_SUPPORTED, "Subscription Identifiers not supported"},
  70. {MQTTREASONCODE_WILDCARD_SUBSCRIPTIONS_NOT_SUPPORTED, "Wildcard Subscriptions not supported"}
  71. };
  72. const char* MQTTReasonCode_toString(enum MQTTReasonCodes value)
  73. {
  74. int i = 0;
  75. const char* result = NULL;
  76. for (i = 0; i < ARRAY_SIZE(nameToString); ++i)
  77. {
  78. if (nameToString[i].value == value)
  79. {
  80. result = nameToString[i].name;
  81. break;
  82. }
  83. }
  84. return result;
  85. }