Merge in more updates for docs (we are just going to check them all in so that users...
[awesomized/libmemcached] / libmemcached / options / context.h
index d65f8ede53ce8659367a37c06cbbf1a078a9b6ab..bbca66c855e23600646de64c627a585c8f8b5e39 100644 (file)
@@ -37,7 +37,7 @@
 
 #pragma once
 
-#include <libmemcached/memcached.h>
+#include <libmemcached/common.h>
 
 class Context
 {
@@ -102,6 +102,31 @@ public:
     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_string_with_size("Error occured while parsing: "));
+    memcached_string_append(error_string, memcached_string_make_from_cstr(begin));
+    memcached_string_append(error_string, memcached_string_with_size(" ("));
+
+    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_string_with_size(")"));
+
+    memcached_set_error_string(memc, rc, memcached_string_value(error_string), memcached_string_length(error_string));
+
+    memcached_string_free(error_string);
+  }
+
   ~Context()
   {
     destroy_scanner();