#pragma once
-#include <libmemcached/csl/common.h>
-#include <libmemcached/csl/parser.h>
+#include "libmemcached/csl/common.h"
+#include "libmemcached/csl/parser.h"
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)
+ _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()
_end= true;
}
+ bool set_hash(memcached_hash_t hash);
+
void set_server()
{
_is_server= true;
_is_server= false;
}
- bool is_server()
+ bool is_server() const
{
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 char *hostname() const
{
return _hostname;
}
~Context()
{
+ memcached_string_free(&_string_buffer);
destroy_scanner();
+ memc->state.is_parsing= false;
}
yytokentype previous_token;
bool _is_server;
bool _end;
char _hostname[NI_MAXHOST];
+ bool _has_hash;
+ memcached_string_st _string_buffer;
};