1 #ifndef DATABASE_ETCD_ETCDQL_IF_H_
2 #define DATABASE_ETCD_ETCDQL_IF_H_
5 #include <boost/asio/ip/tcp.hpp>
6 #include <grpc++/grpc++.h>
7 #include <boost/function.hpp>
11 using grpc::ClientContext;
12 using grpc::CompletionQueue;
14 using grpc::ClientAsyncResponseReader;
15 using grpc::ClientAsyncReaderWriter;
28 typedef boost::asio::ip::tcp::endpoint
Endpoint;
45 typedef boost::function<void (const EtcdResponse& Resp)>
WatchCb;
52 EtcdIf(
const std::vector<std::string> &etcd_hosts,
53 const int port,
bool useSsl);
70 const std::string &range_end,
80 virtual void Set(
const std::string &key,
81 const std::string &value);
90 virtual void Delete(
const std::string &key,
91 const std::string &range_end);
99 virtual void Watch(
const std::string &key,
135 std::unique_ptr<ClientAsyncResponseReader<RangeResponse>>
get_reader_;
147 std::unique_ptr<ClientAsyncResponseReader<PutResponse>>
set_reader_;
166 std::unique_ptr<ClientAsyncReaderWriter<WatchRequest,WatchResponse>>
watch_reader_;
188 typedef std::multimap<std::string, std::string>
kv_map;
213 const std::string&
key()
const {
return key_; }
std::vector< Endpoint > endpoints() const
void WaitForWatchResponse(WatchCb cb)
const std::string & prev_value() const
std::unique_ptr< Watch::Stub > watch_stub_
void set_err_msg(std::string msg)
WatchAction action() const
DeleteRangeResponse delete_resp_
std::unique_ptr< ClientAsyncResponseReader< PutResponse > > set_reader_
const std::string & prev_key() const
virtual EtcdResponse Get(const std::string &key, const std::string &range_end, int limit)
std::vector< std::string > hosts_
const std::string & value() const
std::unique_ptr< ClientAsyncResponseReader< RangeResponse > > get_reader_
virtual void Set(const std::string &key, const std::string &value)
std::unique_ptr< EtcdAsyncSetCall > set_call_
EtcdResponse ParseGetResponse()
const std::string & key() const
void set_key(std::string key)
void set_prev_val(std::string prev_val)
WatchResponse watch_resp_
void set_revision(int revision)
std::vector< std::string > hosts() const
std::multimap< std::string, std::string > kv_map
const std::string & err_msg() const
void set_val(std::string val)
void set_err_code(int code)
const kv_map & kvmap() const
void set_kv_map(kv_map kvs)
EtcdIf(const std::vector< std::string > &etcd_hosts, const int port, bool useSsl)
std::unique_ptr< EtcdAsyncWatchCall > watch_call_
virtual void Delete(const std::string &key, const std::string &range_end)
boost::function< void(const EtcdResponse &Resp)> WatchCb
std::unique_ptr< ClientAsyncResponseReader< DeleteRangeResponse > > delete_reader_
boost::asio::ip::tcp::endpoint Endpoint
std::unique_ptr< EtcdAsyncGetCall > get_call_
std::unique_ptr< ClientAsyncReaderWriter< WatchRequest, WatchResponse > > watch_reader_
std::vector< Endpoint > endpoints_
void set_prev_key(std::string prev_key)
std::unique_ptr< KV::Stub > kv_stub_
std::unique_ptr< EtcdAsyncDeleteCall > delete_call_
virtual void Watch(const std::string &key, WatchCb cb)
void set_action(WatchAction action)