#pragma once
-#include <libmemcached/memcached.h>
+#include <libmemcached/common.h>
class Context
{
const char *set_hostname(const char *str, size_t size)
{
- size_t copy_length= std::min((size_t)NI_MAXHOST, size);
+ 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;
}
+ void abort(const char *error)
+ {
+ if (rc == MEMCACHED_SUCCESS)
+ rc= MEMCACHED_PARSE_ERROR;
+
+ memcached_string_st *error_string= memcached_string_create(memc, NULL, 1024);
+ memcached_string_append(error_string, memcached_literal_param("Error occured while parsing: "));
+ memcached_string_append(error_string, memcached_string_make_from_cstr(begin));
+ memcached_string_append(error_string, memcached_literal_param(" ("));
+
+ if (rc == MEMCACHED_PARSE_ERROR and error)
+ {
+ memcached_string_append(error_string, memcached_string_make_from_cstr(error));
+ }
+ else
+ {
+ memcached_string_append(error_string, memcached_string_make_from_cstr(memcached_strerror(NULL, rc)));
+ }
+ memcached_string_append(error_string, memcached_literal_param(")"));
+
+ memcached_set_error(*memc, rc, MEMCACHED_AT, memcached_string_value(error_string), memcached_string_length(error_string));
+
+ memcached_string_free(error_string);
+ }
+
~Context()
{
destroy_scanner();