etcd-cpp-apiv3/src/Value.cpp

76 lines
1.9 KiB
C++

#include <iomanip>
#include "etcd/Value.hpp"
#include "etcd/v3/KeyValue.hpp"
etcd::Value::Value()
: dir(false), created(0), modified(0), _version(0), _ttl(0), leaseId(0) {}
etcd::Value::Value(etcdv3::KeyValue const& kv) {
dir = false;
_key = kv.kvs.key();
value = kv.kvs.value();
created = kv.kvs.create_revision();
modified = kv.kvs.mod_revision();
_version = kv.kvs.version();
leaseId = kv.kvs.lease();
_ttl = kv.get_ttl();
}
etcd::Value::Value(mvccpb::KeyValue const& kv) {
dir = false;
_key = kv.key();
value = kv.value();
created = kv.create_revision();
modified = kv.mod_revision();
_version = kv.version();
leaseId = kv.lease();
_ttl = -1;
}
std::string const& etcd::Value::key() const { return _key; }
bool etcd::Value::is_dir() const { return dir; }
std::string const& etcd::Value::as_string() const { return value; }
int64_t etcd::Value::created_index() const { return created; }
int64_t etcd::Value::modified_index() const { return modified; }
int64_t etcd::Value::version() const { return _version; }
int etcd::Value::ttl() const { return _ttl; }
int64_t etcd::Value::lease() const { return leaseId; }
etcd::Event::Event(mvccpb::Event const& event) {
_has_kv = event.has_kv();
_has_prev_kv = event.has_prev_kv();
if (_has_kv) {
_kv = Value(event.kv());
}
if (_has_prev_kv) {
_prev_kv = Value(event.prev_kv());
}
if (event.type() == mvccpb::Event::PUT) {
event_type_ = EventType::PUT;
} else if (event.type() == mvccpb::Event::DELETE_) {
event_type_ = EventType::DELETE_;
} else {
event_type_ = EventType::INVALID;
}
}
enum etcd::Event::EventType etcd::Event::event_type() const {
return event_type_;
}
bool etcd::Event::has_kv() const { return _has_kv; }
bool etcd::Event::has_prev_kv() const { return _has_prev_kv; }
const etcd::Value& etcd::Event::kv() const { return _kv; }
const etcd::Value& etcd::Event::prev_kv() const { return _prev_kv; }