X-Git-Url: https://git.m6w6.name/?a=blobdiff_plain;f=libmemcached%2Fcsl%2Fcontext.cc;h=fa2500be61837d13df5ab223f63a6b4c76a356af;hb=cbb1b6155e959764f3d9915b7d98ed598384e0f6;hp=36ff2587998956708e886bc4c3ad7f89861b5897;hpb=1825425e12755baebb754a9c4a4df69e3cea0bc9;p=awesomized%2Flibmemcached diff --git a/libmemcached/csl/context.cc b/libmemcached/csl/context.cc index 36ff2587..fa2500be 100644 --- a/libmemcached/csl/context.cc +++ b/libmemcached/csl/context.cc @@ -38,7 +38,7 @@ #include #include -void Context::abort(const char *error_arg, yytokentype last_token, const char *last_token_str) +void Context::abort(const char *error_arg, config_tokentype last_token, const char *last_token_str) { rc= MEMCACHED_PARSE_ERROR; (void)last_token; @@ -49,10 +49,16 @@ void Context::abort(const char *error_arg, yytokentype last_token, const char *l return; } - memcached_set_parser_error(*memc, MEMCACHED_AT, "%s", last_token_str ? last_token_str : " "); + if (last_token_str) + { + memcached_set_parser_error(*memc, MEMCACHED_AT, "%s", last_token_str); + return; + } + + memcached_set_parser_error(*memc, MEMCACHED_AT, "unknown parsing error"); } -void Context::error(const char *error_arg, yytokentype last_token, const char *last_token_str) +void Context::error(const char *error_arg, config_tokentype last_token, const char *last_token_str) { rc= MEMCACHED_PARSE_ERROR; if (not error_arg) @@ -61,7 +67,7 @@ void Context::error(const char *error_arg, yytokentype last_token, const char *l return; } - if (error_arg and strcmp(error_arg, "memory exhausted") == 0) + if (strcmp(error_arg, "memory exhausted") == 0) { (void)memcached_set_error(*memc, MEMCACHED_MEMORY_ALLOCATION_FAILURE, MEMCACHED_AT, memcached_string_make_from_cstr(error_arg)); return; @@ -69,9 +75,7 @@ void Context::error(const char *error_arg, yytokentype last_token, const char *l // We now test if it is something other then a syntax error, if it we // return a generic message - if (error_arg and strcmp(error_arg, "syntax error") == 0) - { } - else if (error_arg) + if (strcmp(error_arg, "syntax error") != 0) { memcached_set_parser_error(*memc, MEMCACHED_AT, "Error occured during parsing (%s)", error_arg); return; @@ -91,12 +95,42 @@ void Context::error(const char *error_arg, yytokentype last_token, const char *l } } -const char *Context::set_hostname(const char *str, size_t size) +void Context::hostname(const char *str, size_t size, server_t& server_) { size_t copy_length= size_t(NI_MAXHOST) > size ? size : size_t(NI_MAXHOST); memcpy(_hostname, str, copy_length); _hostname[copy_length]= 0; - return _hostname; + server_.port= MEMCACHED_DEFAULT_PORT; + server_.weight= 1; + server_.c_str= _hostname; + server_.size= size; } +bool Context::string_buffer(const char *str, size_t size, memcached_string_t& string_) +{ + if (memcached_string_set(_string_buffer, str, size)) + { + string_.c_str= memcached_string_value(_string_buffer); + string_.size= memcached_string_length(_string_buffer); + + return true; + } + + return false; +} + +bool Context::set_hash(memcached_hash_t hash) +{ + if (_has_hash) + { + return false; + } + + if ((memcached_behavior_set(memc, MEMCACHED_BEHAVIOR_HASH, hash)) != MEMCACHED_SUCCESS) + { + return false; + } + + return _has_hash= true; +}