herr.h 4.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122
  1. #ifndef HV_ERR_H_
  2. #define HV_ERR_H_
  3. #include <errno.h>
  4. #include "hexport.h"
  5. #ifndef SYS_NERR
  6. #define SYS_NERR 133
  7. #endif
  8. // F(errcode, name, errmsg)
  9. // [1, 133]
  10. #define FOREACH_ERR_SYS(F)
  11. // [1xx~5xx]
  12. #define FOREACH_ERR_STATUS(F)
  13. // [1xxx]
  14. #define FOREACH_ERR_COMMON(F) \
  15. F(0, OK, "OK") \
  16. F(1000, UNKNOWN, "Unknown error") \
  17. \
  18. F(1001, NULL_PARAM, "Null parameter") \
  19. F(1002, NULL_POINTER, "Null pointer") \
  20. F(1003, NULL_DATA, "Null data") \
  21. F(1004, NULL_HANDLE, "Null handle") \
  22. \
  23. F(1011, INVALID_PARAM, "Invalid parameter")\
  24. F(1012, INVALID_POINTER, "Invalid pointer") \
  25. F(1013, INVALID_DATA, "Invalid data") \
  26. F(1014, INVALID_HANDLE, "Invalid handle") \
  27. F(1015, INVALID_JSON, "Invalid json") \
  28. F(1016, INVALID_XML, "Invalid xml") \
  29. F(1017, INVALID_FMT, "Invalid format") \
  30. F(1018, INVALID_PROTOCOL, "Invalid protocol") \
  31. F(1019, INVALID_PACKAGE, "Invalid package") \
  32. \
  33. F(1021, OUT_OF_RANGE, "Out of range") \
  34. F(1022, OVER_LIMIT, "Over the limit") \
  35. F(1023, MISMATCH, "Mismatch") \
  36. F(1024, PARSE, "Parse failed") \
  37. \
  38. F(1030, OPEN_FILE, "Open file failed") \
  39. F(1031, SAVE_FILE, "Save file failed") \
  40. F(1032, READ_FILE, "Read file failed") \
  41. F(1033, WRITE_FILE, "Write file failed")\
  42. \
  43. F(1040, SSL, "SSL/TLS error") \
  44. F(1041, NEW_SSL_CTX, "New SSL_CTX failed") \
  45. F(1042, NEW_SSL, "New SSL failed") \
  46. F(1043, SSL_HANDSHAKE, "SSL handshake failed") \
  47. \
  48. F(1100, TASK_TIMEOUT, "Task timeout") \
  49. F(1101, TASK_QUEUE_FULL, "Task queue full") \
  50. F(1102, TASK_QUEUE_EMPTY, "Task queue empty") \
  51. \
  52. F(1400, REQUEST, "Bad request") \
  53. F(1401, RESPONSE, "Bad response") \
  54. // [-1xxx]
  55. #define FOREACH_ERR_FUNC(F) \
  56. F(-1001, MALLOC, "malloc() error") \
  57. F(-1002, REALLOC, "realloc() error") \
  58. F(-1003, CALLOC, "calloc() error") \
  59. F(-1004, FREE, "free() error") \
  60. \
  61. F(-1011, SOCKET, "socket() error") \
  62. F(-1012, BIND, "bind() error") \
  63. F(-1013, LISTEN, "listen() error") \
  64. F(-1014, ACCEPT, "accept() error") \
  65. F(-1015, CONNECT, "connect() error") \
  66. F(-1016, RECV, "recv() error") \
  67. F(-1017, SEND, "send() error") \
  68. F(-1018, RECVFROM, "recvfrom() error") \
  69. F(-1019, SENDTO, "sendto() error") \
  70. F(-1020, SETSOCKOPT, "setsockopt() error") \
  71. F(-1021, GETSOCKOPT, "getsockopt() error") \
  72. // grpc [4xxx]
  73. #define FOREACH_ERR_GRPC(F) \
  74. F(4000, GRPC_FIRST, "grpc no error") \
  75. F(4001, GRPC_STATUS_CANCELLED, "grpc status: cancelled") \
  76. F(4002, GRPC_STATUS_UNKNOWN, "grpc unknown error") \
  77. F(4003, GRPC_STATUS_INVALID_ARGUMENT, "grpc status: invalid argument")\
  78. F(4004, GRPC_STATUS_DEADLINE, "grpc status: deadline") \
  79. F(4005, GRPC_STATUS_NOT_FOUND, "grpc status: not found") \
  80. F(4006, GRPC_STATUS_ALREADY_EXISTS, "grpc status: already exists") \
  81. F(4007, GRPC_STATUS_PERMISSION_DENIED, "grpc status: permission denied") \
  82. F(4008, GRPC_STATUS_RESOURCE_EXHAUSTED, "grpc status: resource exhausted") \
  83. F(4009, GRPC_STATUS_FAILED_PRECONDITION,"grpc status: failed precondition") \
  84. F(4010, GRPC_STATUS_ABORTED, "grpc status: aborted") \
  85. F(4011, GRPC_STATUS_OUT_OF_RANGE, "grpc status: out of range") \
  86. F(4012, GRPC_STATUS_UNIMPLEMENTED, "grpc status: unimplemented") \
  87. F(4013, GRPC_STATUS_INTERNAL, "grpc internal error") \
  88. F(4014, GRPC_STATUS_UNAVAILABLE, "grpc service unavailable") \
  89. F(4015, GRPC_STATUS_DATA_LOSS, "grpc status: data loss") \
  90. #define FOREACH_ERR(F) \
  91. FOREACH_ERR_COMMON(F) \
  92. FOREACH_ERR_FUNC(F) \
  93. FOREACH_ERR_GRPC(F) \
  94. #undef ERR_OK // prevent conflict
  95. enum {
  96. #define F(errcode, name, errmsg) ERR_##name = errcode,
  97. FOREACH_ERR(F)
  98. #undef F
  99. };
  100. #ifdef __cplusplus
  101. extern "C" {
  102. #endif
  103. // errcode => errmsg
  104. HV_EXPORT const char* hv_strerror(int err);
  105. #ifdef __cplusplus
  106. } // extern "C"
  107. #endif
  108. #endif // HV_ERR_H_