Fix case where --socket was not always been stored correctly.
[awesomized/libmemcached] / libmemcached / csl / context.h
index 12e028ddcaeac95c74c33073e273d3957a1cff50..97303c50bf09f463e4566391356a4ed30cf79bbd 100644 (file)
 class Context
 {
 public:
-  Context(const char *option_string, size_t option_string_length, memcached_st *memc_arg,
+  Context(const char *option_string, size_t option_string_length, memcached_st *memc_,
           memcached_return_t &rc_arg) :
     previous_token(END),
     scanner(NULL),
+    buf(option_string),
     begin(NULL),
     pos(0),
-    memc(NULL),
+    length(option_string_length),
+    memc(memc_),
     rc(rc_arg),
     _is_server(false),
     _end(false),
     _has_hash(false)
   {
     _hostname[0]= 0;
-    buf= option_string;
-    length= option_string_length;
-    memc= memc_arg;
     init_scanner();
     rc= MEMCACHED_SUCCESS;
 
     memc->state.is_parsing= true;
+    memcached_string_create(memc,
+                            &_string_buffer,
+                            1024);
   }
 
   bool end()
@@ -95,7 +97,9 @@ public:
     return _is_server;
   }
 
-  const char *set_hostname(const char *str, size_t size);
+  void hostname(const char*, size_t, server_t&);
+
+  bool string_buffer(const char*, size_t, memcached_string_t&);
 
   const char *hostname() const
   {
@@ -107,6 +111,7 @@ public:
 
   ~Context()
   {
+    memcached_string_free(&_string_buffer);
     destroy_scanner();
     memc->state.is_parsing= false;
   }
@@ -129,4 +134,5 @@ private:
   bool _end;
   char _hostname[NI_MAXHOST];
   bool _has_hash;
+  memcached_string_st _string_buffer;
 };