X-Git-Url: https://git.m6w6.name/?a=blobdiff_plain;f=libmemcached%2Ferror.cc;h=d6b7f16613734bdea1e86c59a0339a8247eb8c2e;hb=a60c98bb02391f995a03c3db5898e146ff2f6f3b;hp=a8f420431e71c0c8af37de62a08f6dac20894911;hpb=7abcaebdc4c3dd11b779eaef58a7371fb82ae888;p=m6w6%2Flibmemcached diff --git a/libmemcached/error.cc b/libmemcached/error.cc index a8f42043..d6b7f166 100644 --- a/libmemcached/error.cc +++ b/libmemcached/error.cc @@ -36,7 +36,7 @@ */ #include -#include +#include #define MAX_ERROR_LENGTH 2048 struct memcached_error_t @@ -148,6 +148,11 @@ static void _set(memcached_st& memc, memcached_string_t *str, memcached_return_t errmsg_ptr, at); } + else if (rc == MEMCACHED_PARSE_ERROR and str and str->size) + { + error->size= (int)snprintf(error->message, MAX_ERROR_LENGTH, "%.*s -> %s", + int(str->size), str->c_str, at); + } else if (str and str->size) { error->size= (int)snprintf(error->message, MAX_ERROR_LENGTH, "%s, %.*s -> %s", @@ -166,21 +171,22 @@ static void _set(memcached_st& memc, memcached_string_t *str, memcached_return_t memcached_return_t memcached_set_error(memcached_st& memc, memcached_return_t rc, const char *at, const char *str, size_t length) { - assert(rc != MEMCACHED_ERRNO); + assert_msg(rc != MEMCACHED_ERRNO, "Programmer error, MEMCACHED_ERRNO was set to be returned to client"); memcached_string_t tmp= { str, length }; return memcached_set_error(memc, rc, at, tmp); } memcached_return_t memcached_set_error(memcached_server_st& self, memcached_return_t rc, const char *at, const char *str, size_t length) { - assert(rc != MEMCACHED_ERRNO); + assert_msg(rc != MEMCACHED_ERRNO, "Programmer error, MEMCACHED_ERRNO was set to be returned to client"); + assert_msg(rc != MEMCACHED_SOME_ERRORS, "Programmer error, MEMCACHED_SOME_ERRORS was about to be set on a memcached_server_st"); memcached_string_t tmp= { str, length }; return memcached_set_error(self, rc, at, tmp); } memcached_return_t memcached_set_error(memcached_st& memc, memcached_return_t rc, const char *at, memcached_string_t& str) { - assert(rc != MEMCACHED_ERRNO); + assert_msg(rc != MEMCACHED_ERRNO, "Programmer error, MEMCACHED_ERRNO was set to be returned to client"); if (memcached_success(rc)) return MEMCACHED_SUCCESS; @@ -189,9 +195,24 @@ memcached_return_t memcached_set_error(memcached_st& memc, memcached_return_t rc return rc; } +memcached_return_t memcached_set_parser_error(memcached_st& memc, + const char *at, + const char *format, ...) +{ + va_list args; + + char buffer[BUFSIZ]; + va_start(args, format); + int length= vsnprintf(buffer, sizeof(buffer), format, args); + va_end(args); + + return memcached_set_error(memc, MEMCACHED_PARSE_ERROR, at, buffer, length); +} + memcached_return_t memcached_set_error(memcached_server_st& self, memcached_return_t rc, const char *at, memcached_string_t& str) { - assert(rc != MEMCACHED_ERRNO); + assert_msg(rc != MEMCACHED_ERRNO, "Programmer error, MEMCACHED_ERRNO was set to be returned to client"); + assert_msg(rc != MEMCACHED_SOME_ERRORS, "Programmer error, MEMCACHED_SOME_ERRORS was about to be set on a memcached_server_st"); if (memcached_success(rc)) return MEMCACHED_SUCCESS; @@ -222,7 +243,8 @@ memcached_return_t memcached_set_error(memcached_server_st& self, memcached_retu memcached_return_t memcached_set_error(memcached_server_st& self, memcached_return_t rc, const char *at) { - assert(rc != MEMCACHED_ERRNO); + assert_msg(rc != MEMCACHED_ERRNO, "Programmer error, MEMCACHED_ERRNO was set to be returned to client"); + assert_msg(rc != MEMCACHED_SOME_ERRORS, "Programmer error, MEMCACHED_SOME_ERRORS was about to be set on a memcached_server_st"); if (memcached_success(rc)) return MEMCACHED_SUCCESS; @@ -242,7 +264,7 @@ memcached_return_t memcached_set_error(memcached_server_st& self, memcached_retu memcached_return_t memcached_set_error(memcached_st& self, memcached_return_t rc, const char *at) { - assert(rc != MEMCACHED_ERRNO); + assert_msg(rc != MEMCACHED_ERRNO, "Programmer error, MEMCACHED_ERRNO was set to be returned to client"); if (memcached_success(rc)) return MEMCACHED_SUCCESS; @@ -339,10 +361,12 @@ memcached_return_t memcached_set_errno(memcached_server_st& self, int local_errn static void _error_print(const memcached_error_t *error) { - if (not error) + if (error == NULL) + { return; + } - if (not error->size) + if (error->size == 0) { fprintf(stderr, "%s\n", memcached_strerror(NULL, error->rc) ); } @@ -393,8 +417,10 @@ void memcached_error_free(memcached_server_st& self) const char *memcached_last_error_message(memcached_st *memc) { - if (not memc) + if (memc == NULL) + { return memcached_strerror(memc, MEMCACHED_INVALID_ARGUMENTS); + } if (not memc->error_messages) return memcached_strerror(memc, MEMCACHED_SUCCESS); @@ -405,7 +431,6 @@ const char *memcached_last_error_message(memcached_st *memc) return memc->error_messages->message; } - bool memcached_has_current_error(memcached_st &memc) { if (memc.error_messages @@ -418,10 +443,17 @@ bool memcached_has_current_error(memcached_st &memc) return false; } +bool memcached_has_current_error(memcached_server_st& server) +{ + return memcached_has_current_error(*(server.root)); +} + memcached_return_t memcached_last_error(memcached_st *memc) { - if (not memc) + if (memc == NULL) + { return MEMCACHED_INVALID_ARGUMENTS; + } if (not memc->error_messages) return MEMCACHED_SUCCESS; @@ -431,19 +463,25 @@ memcached_return_t memcached_last_error(memcached_st *memc) int memcached_last_error_errno(memcached_st *memc) { - if (not memc) + if (memc == NULL) + { return 0; + } if (not memc->error_messages) + { return 0; + } return memc->error_messages->local_errno; } const char *memcached_server_error(memcached_server_instance_st server) { - if (not server) - return memcached_strerror(server->root, MEMCACHED_INVALID_ARGUMENTS); + if (server == NULL) + { + return NULL; + } if (not server->error_messages) return memcached_strerror(server->root, MEMCACHED_SUCCESS); @@ -457,8 +495,10 @@ const char *memcached_server_error(memcached_server_instance_st server) memcached_error_t *memcached_error_copy(const memcached_server_st& server) { - if (not server.error_messages) + if (server.error_messages == NULL) + { return NULL; + } memcached_error_t *error= (memcached_error_t *)libmemcached_malloc(server.root, sizeof(memcached_error_t)); memcpy(error, server.error_messages, sizeof(memcached_error_t)); @@ -469,10 +509,15 @@ memcached_error_t *memcached_error_copy(const memcached_server_st& server) memcached_return_t memcached_server_error_return(memcached_server_instance_st ptr) { + if (ptr == NULL) + { + return MEMCACHED_INVALID_ARGUMENTS; + } + if (ptr and ptr->error_messages) { return ptr->error_messages->rc; } - return MEMCACHED_FAILURE; + return MEMCACHED_SUCCESS; }