unify errno for crossing platform

connection_manager
YuQing 2021-01-07 12:20:40 +08:00
parent 0825cfc5fe
commit c0128c0f15
3 changed files with 29 additions and 2 deletions

View File

@ -53,17 +53,23 @@
#define SF_RETRIABLE_ERROR_NO_CHANNEL 9914 #define SF_RETRIABLE_ERROR_NO_CHANNEL 9914
#define SF_RETRIABLE_ERROR_CHANNEL_INVALID 9915 //client should re-setup channel #define SF_RETRIABLE_ERROR_CHANNEL_INVALID 9915 //client should re-setup channel
//std errno wrapper for crossing platform
#define SF_ERROR_EINVAL 8811
#define SF_ERROR_EAGAIN 8835
#define SF_ERROR_EOVERFLOW 8884
#define SF_FORCE_CLOSE_CONNECTION_ERROR_MIN SF_RETRIABLE_ERROR_NOT_MASTER #define SF_FORCE_CLOSE_CONNECTION_ERROR_MIN SF_RETRIABLE_ERROR_NOT_MASTER
#define SF_FORCE_CLOSE_CONNECTION_ERROR_MAX SF_RETRIABLE_ERROR_MAX #define SF_FORCE_CLOSE_CONNECTION_ERROR_MAX SF_RETRIABLE_ERROR_MAX
#define SF_IS_RETRIABLE_ERROR(code) \ #define SF_IS_RETRIABLE_ERROR(code) \
((code >= SF_RETRIABLE_ERROR_MIN && code <= SF_RETRIABLE_ERROR_MAX) || \ ((code >= SF_RETRIABLE_ERROR_MIN && code <= SF_RETRIABLE_ERROR_MAX) || \
(code == EAGAIN) || is_network_error(code)) (code == SF_ERROR_EAGAIN) || is_network_error(code))
#define SF_FORCE_CLOSE_CONNECTION_ERROR(code) \ #define SF_FORCE_CLOSE_CONNECTION_ERROR(code) \
((code >= SF_FORCE_CLOSE_CONNECTION_ERROR_MIN && \ ((code >= SF_FORCE_CLOSE_CONNECTION_ERROR_MIN && \
code <= SF_FORCE_CLOSE_CONNECTION_ERROR_MAX) || \ code <= SF_FORCE_CLOSE_CONNECTION_ERROR_MAX) || \
(result == EINVAL) || (result == EOVERFLOW) || \ (result == SF_ERROR_EINVAL) || \
(result == SF_ERROR_EOVERFLOW) || \
(result != 0 && is_network_error(code))) (result != 0 && is_network_error(code)))

View File

@ -183,6 +183,12 @@ const char *sf_strerror(const int errnum)
return "idempotency channel not exist"; return "idempotency channel not exist";
case SF_RETRIABLE_ERROR_CHANNEL_INVALID: case SF_RETRIABLE_ERROR_CHANNEL_INVALID:
return "idempotency channel is invalid"; return "idempotency channel is invalid";
case SF_ERROR_EINVAL:
return STRERROR(EINVAL);
case SF_ERROR_EAGAIN:
return STRERROR(EAGAIN);
case SF_ERROR_EOVERFLOW:
return STRERROR(EOVERFLOW);
default: default:
return STRERROR(errnum); return STRERROR(errnum);
} }

View File

@ -20,6 +20,7 @@
#include "fastcommon/logger.h" #include "fastcommon/logger.h"
#include "fastcommon/sched_thread.h" #include "fastcommon/sched_thread.h"
#include "sf_define.h"
#include "sf_types.h" #include "sf_types.h"
#ifdef DEBUG_FLAG /*only for format check*/ #ifdef DEBUG_FLAG /*only for format check*/
@ -89,6 +90,20 @@ static inline void sf_setup_schedule(struct log_context *pContext,
scheduleArray->count = scheduleEntry - scheduleArray->entries; scheduleArray->count = scheduleEntry - scheduleArray->entries;
} }
static inline int sf_unify_errno(const int errnum)
{
switch (errnum) {
case EINVAL:
return SF_ERROR_EINVAL;
case EAGAIN:
return SF_ERROR_EAGAIN;
case EOVERFLOW:
return SF_ERROR_EOVERFLOW;
default:
return errnum;
}
}
const char *sf_strerror(const int errnum); const char *sf_strerror(const int errnum);
#ifdef __cplusplus #ifdef __cplusplus