Replace Tabs in sources and README with spaces.
Signed-off-by: Tao He <sighingnow@gmail.com>
This commit is contained in:
parent
56c7189f92
commit
680e8ad5c6
20
README.md
20
README.md
|
|
@ -580,28 +580,28 @@ void wait_for_connection(etcd::Client &client) {
|
|||
|
||||
// a loop for initialized a watcher with auto-restart capability
|
||||
void initialize_watcher(const std::string& endpoints,
|
||||
const std::string& prefix,
|
||||
std::function<void(etcd::Response)> callback,
|
||||
std::shared_ptr<etcd::Watcher>& watcher) {
|
||||
etcd::Client client(endpoints);
|
||||
wait_for_connection(client);
|
||||
const std::string& prefix,
|
||||
std::function<void(etcd::Response)> callback,
|
||||
std::shared_ptr<etcd::Watcher>& watcher) {
|
||||
etcd::Client client(endpoints);
|
||||
wait_for_connection(client);
|
||||
|
||||
// Check if the failed one has been cancelled first
|
||||
if (watcher && watcher->Cancelled()) {
|
||||
std::cout << "watcher's reconnect loop been cancelled" << std::endl;
|
||||
return;
|
||||
}
|
||||
watcher.reset(new etcd::Watcher(client, prefix, callback, true));
|
||||
watcher.reset(new etcd::Watcher(client, prefix, callback, true));
|
||||
|
||||
// Note that lambda requires `mutable`qualifier.
|
||||
watcher->Wait([endpoints, prefix, callback,
|
||||
/* By reference for renewing */ &watcher](bool cancelled) mutable {
|
||||
// Note that lambda requires `mutable`qualifier.
|
||||
watcher->Wait([endpoints, prefix, callback,
|
||||
/* By reference for renewing */ &watcher](bool cancelled) mutable {
|
||||
if (cancelled) {
|
||||
std::cout << "watcher's reconnect loop stopped as been cancelled" << std::endl;
|
||||
return;
|
||||
}
|
||||
initialize_watcher(endpoints, prefix, callback, watcher);
|
||||
});
|
||||
});
|
||||
}
|
||||
```
|
||||
|
||||
|
|
|
|||
|
|
@ -5,13 +5,13 @@
|
|||
#include <memory>
|
||||
|
||||
namespace etcdserverpb {
|
||||
class TxnRequest;
|
||||
class TxnRequest;
|
||||
}
|
||||
|
||||
namespace etcdv3 {
|
||||
|
||||
enum class CompareResult {
|
||||
EQUAL = 0,
|
||||
EQUAL = 0,
|
||||
GREATER = 1,
|
||||
LESS = 2,
|
||||
NOT_EQUAL = 3,
|
||||
|
|
@ -27,32 +27,32 @@ enum class CompareTarget {
|
|||
|
||||
class Transaction {
|
||||
public:
|
||||
Transaction();
|
||||
Transaction(std::string const&);
|
||||
virtual ~Transaction();
|
||||
Transaction();
|
||||
Transaction(std::string const&);
|
||||
virtual ~Transaction();
|
||||
|
||||
// Set a new key for different comparisons and /put/get/delete requests.
|
||||
void reset_key(std::string const& newkey);
|
||||
// Set a new key for different comparisons and /put/get/delete requests.
|
||||
void reset_key(std::string const& newkey);
|
||||
|
||||
void init_compare(CompareResult, CompareTarget);
|
||||
void init_compare(std::string const &old_value, CompareResult, CompareTarget);
|
||||
void init_compare(int64_t old_value, CompareResult, CompareTarget);
|
||||
void init_compare(CompareResult, CompareTarget);
|
||||
void init_compare(std::string const &old_value, CompareResult, CompareTarget);
|
||||
void init_compare(int64_t old_value, CompareResult, CompareTarget);
|
||||
|
||||
void setup_basic_failure_operation(std::string const &key);
|
||||
void setup_set_failure_operation(std::string const &key, std::string const &value, int64_t leaseid);
|
||||
void setup_basic_create_sequence(std::string const &key, std::string const &value, int64_t leaseid);
|
||||
void setup_compare_and_swap_sequence(std::string const &valueToSwap, int64_t leaseid);
|
||||
void setup_delete_sequence(std::string const &key, std::string const &range_end, bool recursive);
|
||||
void setup_delete_failure_operation(std::string const &key, std::string const &range_end, bool recursive);
|
||||
void setup_compare_and_delete_operation(std::string const& key);
|
||||
void setup_basic_failure_operation(std::string const &key);
|
||||
void setup_set_failure_operation(std::string const &key, std::string const &value, int64_t leaseid);
|
||||
void setup_basic_create_sequence(std::string const &key, std::string const &value, int64_t leaseid);
|
||||
void setup_compare_and_swap_sequence(std::string const &valueToSwap, int64_t leaseid);
|
||||
void setup_delete_sequence(std::string const &key, std::string const &range_end, bool recursive);
|
||||
void setup_delete_failure_operation(std::string const &key, std::string const &range_end, bool recursive);
|
||||
void setup_compare_and_delete_operation(std::string const& key);
|
||||
|
||||
// update without `get` and no `prev_kv` returned
|
||||
void setup_put(std::string const &key, std::string const &value);
|
||||
void setup_delete(std::string const &key);
|
||||
// update without `get` and no `prev_kv` returned
|
||||
void setup_put(std::string const &key, std::string const &value);
|
||||
void setup_delete(std::string const &key);
|
||||
|
||||
std::unique_ptr<etcdserverpb::TxnRequest> txn_request;
|
||||
private:
|
||||
std::string key;
|
||||
std::unique_ptr<etcdserverpb::TxnRequest> txn_request;
|
||||
private:
|
||||
std::string key;
|
||||
};
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -146,9 +146,9 @@ static std::string read_from_file(std::string const &filename) {
|
|||
std::ifstream file(filename.c_str(), std::ios::in);
|
||||
if (file.is_open()) {
|
||||
std::stringstream ss;
|
||||
ss << file.rdbuf ();
|
||||
file.close ();
|
||||
return ss.str ();
|
||||
ss << file.rdbuf ();
|
||||
file.close ();
|
||||
return ss.str ();
|
||||
}
|
||||
return std::string{};
|
||||
}
|
||||
|
|
|
|||
|
|
@ -13,7 +13,7 @@ etcdv3::AsyncLeaseGrantAction::AsyncLeaseGrantAction(
|
|||
etcdv3::ActionParameters const ¶m)
|
||||
: etcdv3::Action(param)
|
||||
{
|
||||
LeaseGrantRequest leasegrant_request;
|
||||
LeaseGrantRequest leasegrant_request;
|
||||
leasegrant_request.set_ttl(parameters.ttl);
|
||||
// If ID is set to 0, etcd will choose an ID.
|
||||
leasegrant_request.set_id(parameters.lease_id);
|
||||
|
|
@ -40,7 +40,7 @@ etcdv3::AsyncLeaseRevokeAction::AsyncLeaseRevokeAction(
|
|||
etcdv3::ActionParameters const ¶m)
|
||||
: etcdv3::Action(param)
|
||||
{
|
||||
LeaseRevokeRequest leaserevoke_request;
|
||||
LeaseRevokeRequest leaserevoke_request;
|
||||
leaserevoke_request.set_id(parameters.lease_id);
|
||||
|
||||
response_reader = parameters.lease_stub->AsyncLeaseRevoke(&context, leaserevoke_request, &cq_);
|
||||
|
|
@ -162,7 +162,7 @@ etcdv3::AsyncLeaseTimeToLiveAction::AsyncLeaseTimeToLiveAction(
|
|||
etcdv3::ActionParameters const ¶m)
|
||||
: etcdv3::Action(param)
|
||||
{
|
||||
LeaseTimeToLiveRequest leasetimetolive_request;
|
||||
LeaseTimeToLiveRequest leasetimetolive_request;
|
||||
leasetimetolive_request.set_id(parameters.lease_id);
|
||||
// FIXME: unsupported parameters: "keys"
|
||||
// leasetimetolive_request.set_keys(parameters.keys);
|
||||
|
|
@ -189,7 +189,7 @@ etcdv3::AsyncLeaseLeasesAction::AsyncLeaseLeasesAction(
|
|||
etcdv3::ActionParameters const ¶m)
|
||||
: etcdv3::Action(param)
|
||||
{
|
||||
LeaseLeasesRequest leaseleases_request;
|
||||
LeaseLeasesRequest leaseleases_request;
|
||||
|
||||
response_reader = parameters.lease_stub->AsyncLeaseLeases(&context, leaseleases_request, &cq_);
|
||||
response_reader->Finish(&reply, &status, (void*)this);
|
||||
|
|
|
|||
|
|
@ -13,11 +13,11 @@ namespace etcdv3 {
|
|||
namespace detail {
|
||||
|
||||
static etcdserverpb::Compare::CompareResult to_compare_result(CompareResult r) {
|
||||
return static_cast<etcdserverpb::Compare::CompareResult>(static_cast<int>(r));
|
||||
return static_cast<etcdserverpb::Compare::CompareResult>(static_cast<int>(r));
|
||||
}
|
||||
|
||||
static etcdserverpb::Compare::CompareTarget to_compare_target(CompareTarget t) {
|
||||
return static_cast<etcdserverpb::Compare::CompareTarget>(static_cast<int>(t));
|
||||
return static_cast<etcdserverpb::Compare::CompareTarget>(static_cast<int>(t));
|
||||
}
|
||||
|
||||
}
|
||||
|
|
@ -25,176 +25,176 @@ static etcdserverpb::Compare::CompareTarget to_compare_target(CompareTarget t) {
|
|||
}
|
||||
|
||||
etcdv3::Transaction::Transaction() {
|
||||
txn_request.reset(new etcdserverpb::TxnRequest{});
|
||||
txn_request.reset(new etcdserverpb::TxnRequest{});
|
||||
}
|
||||
|
||||
etcdv3::Transaction::Transaction(const std::string& key) : key(key) {
|
||||
txn_request.reset(new etcdserverpb::TxnRequest{});
|
||||
txn_request.reset(new etcdserverpb::TxnRequest{});
|
||||
}
|
||||
|
||||
void etcdv3::Transaction::reset_key(std::string const& newkey) {
|
||||
key = newkey;
|
||||
key = newkey;
|
||||
}
|
||||
|
||||
void etcdv3::Transaction::init_compare(CompareResult result, CompareTarget target){
|
||||
Compare* compare = txn_request->add_compare();
|
||||
compare->set_result(detail::to_compare_result(result));
|
||||
compare->set_target(detail::to_compare_target(target));
|
||||
compare->set_key(key);
|
||||
Compare* compare = txn_request->add_compare();
|
||||
compare->set_result(detail::to_compare_result(result));
|
||||
compare->set_target(detail::to_compare_target(target));
|
||||
compare->set_key(key);
|
||||
|
||||
compare->set_version(0);
|
||||
compare->set_version(0);
|
||||
}
|
||||
|
||||
void etcdv3::Transaction::init_compare(std::string const& old_value, CompareResult result, CompareTarget target){
|
||||
Compare* compare = txn_request->add_compare();
|
||||
compare->set_result(detail::to_compare_result(result));
|
||||
compare->set_target(detail::to_compare_target(target));
|
||||
compare->set_key(key);
|
||||
Compare* compare = txn_request->add_compare();
|
||||
compare->set_result(detail::to_compare_result(result));
|
||||
compare->set_target(detail::to_compare_target(target));
|
||||
compare->set_key(key);
|
||||
|
||||
compare->set_value(old_value);
|
||||
compare->set_value(old_value);
|
||||
}
|
||||
|
||||
void etcdv3::Transaction::init_compare(int64_t old_index, CompareResult result, CompareTarget target){
|
||||
Compare* compare = txn_request->add_compare();
|
||||
compare->set_result(detail::to_compare_result(result));
|
||||
compare->set_target(detail::to_compare_target(target));
|
||||
compare->set_key(key);
|
||||
Compare* compare = txn_request->add_compare();
|
||||
compare->set_result(detail::to_compare_result(result));
|
||||
compare->set_target(detail::to_compare_target(target));
|
||||
compare->set_key(key);
|
||||
|
||||
compare->set_mod_revision(old_index);
|
||||
compare->set_mod_revision(old_index);
|
||||
}
|
||||
|
||||
/**
|
||||
* get key on failure
|
||||
*/
|
||||
void etcdv3::Transaction::setup_basic_failure_operation(std::string const& key) {
|
||||
std::unique_ptr<RangeRequest> get_request(new RangeRequest());
|
||||
get_request->set_key(key);
|
||||
RequestOp* req_failure = txn_request->add_failure();
|
||||
req_failure->set_allocated_request_range(get_request.release());
|
||||
std::unique_ptr<RangeRequest> get_request(new RangeRequest());
|
||||
get_request->set_key(key);
|
||||
RequestOp* req_failure = txn_request->add_failure();
|
||||
req_failure->set_allocated_request_range(get_request.release());
|
||||
}
|
||||
|
||||
/**
|
||||
* get key on failure, get key before put, modify and then get updated key
|
||||
*/
|
||||
void etcdv3::Transaction::setup_set_failure_operation(std::string const &key, std::string const &value, int64_t leaseid) {
|
||||
std::unique_ptr<PutRequest> put_request(new PutRequest());
|
||||
put_request->set_key(key);
|
||||
put_request->set_value(value);
|
||||
std::unique_ptr<PutRequest> put_request(new PutRequest());
|
||||
put_request->set_key(key);
|
||||
put_request->set_value(value);
|
||||
put_request->set_prev_kv(true);
|
||||
put_request->set_lease(leaseid);
|
||||
RequestOp* req_failure = txn_request->add_failure();
|
||||
req_failure->set_allocated_request_put(put_request.release());
|
||||
RequestOp* req_failure = txn_request->add_failure();
|
||||
req_failure->set_allocated_request_put(put_request.release());
|
||||
|
||||
std::unique_ptr<RangeRequest> get_request(new RangeRequest());
|
||||
get_request->set_key(key);
|
||||
req_failure = txn_request->add_failure();
|
||||
req_failure->set_allocated_request_range(get_request.release());
|
||||
std::unique_ptr<RangeRequest> get_request(new RangeRequest());
|
||||
get_request->set_key(key);
|
||||
req_failure = txn_request->add_failure();
|
||||
req_failure->set_allocated_request_range(get_request.release());
|
||||
}
|
||||
|
||||
/**
|
||||
* add key and then get new value of key
|
||||
*/
|
||||
void etcdv3::Transaction::setup_basic_create_sequence(std::string const& key, std::string const& value, int64_t leaseid) {
|
||||
std::unique_ptr<PutRequest> put_request(new PutRequest());
|
||||
put_request->set_key(key);
|
||||
put_request->set_value(value);
|
||||
std::unique_ptr<PutRequest> put_request(new PutRequest());
|
||||
put_request->set_key(key);
|
||||
put_request->set_value(value);
|
||||
put_request->set_prev_kv(true);
|
||||
put_request->set_lease(leaseid);
|
||||
RequestOp* req_success = txn_request->add_success();
|
||||
req_success->set_allocated_request_put(put_request.release());
|
||||
RequestOp* req_success = txn_request->add_success();
|
||||
req_success->set_allocated_request_put(put_request.release());
|
||||
|
||||
std::unique_ptr<RangeRequest> get_request(new RangeRequest());
|
||||
get_request->set_key(key);
|
||||
req_success = txn_request->add_success();
|
||||
req_success->set_allocated_request_range(get_request.release());
|
||||
get_request->set_key(key);
|
||||
req_success = txn_request->add_success();
|
||||
req_success->set_allocated_request_range(get_request.release());
|
||||
}
|
||||
|
||||
/**
|
||||
* get key value then modify and get new value
|
||||
*/
|
||||
void etcdv3::Transaction::setup_compare_and_swap_sequence(std::string const& value, int64_t leaseid) {
|
||||
std::unique_ptr<PutRequest> put_request(new PutRequest());
|
||||
put_request->set_key(key);
|
||||
put_request->set_value(value);
|
||||
std::unique_ptr<PutRequest> put_request(new PutRequest());
|
||||
put_request->set_key(key);
|
||||
put_request->set_value(value);
|
||||
put_request->set_prev_kv(true);
|
||||
put_request->set_lease(leaseid);
|
||||
RequestOp* req_success = txn_request->add_success();
|
||||
req_success->set_allocated_request_put(put_request.release());
|
||||
RequestOp* req_success = txn_request->add_success();
|
||||
req_success->set_allocated_request_put(put_request.release());
|
||||
|
||||
std::unique_ptr<RangeRequest> get_request(new RangeRequest());
|
||||
get_request->set_key(key);
|
||||
req_success = txn_request->add_success();
|
||||
req_success->set_allocated_request_range(get_request.release());
|
||||
std::unique_ptr<RangeRequest> get_request(new RangeRequest());
|
||||
get_request->set_key(key);
|
||||
req_success = txn_request->add_success();
|
||||
req_success->set_allocated_request_range(get_request.release());
|
||||
}
|
||||
|
||||
/**
|
||||
* get key, delete
|
||||
*/
|
||||
void etcdv3::Transaction::setup_delete_sequence(std::string const &key, std::string const &range_end, bool recursive) {
|
||||
std::unique_ptr<DeleteRangeRequest> del_request(new DeleteRangeRequest());
|
||||
del_request->set_key(key);
|
||||
std::unique_ptr<DeleteRangeRequest> del_request(new DeleteRangeRequest());
|
||||
del_request->set_key(key);
|
||||
del_request->set_prev_kv(true);
|
||||
if(recursive)
|
||||
{
|
||||
del_request->set_range_end(range_end);
|
||||
}
|
||||
if(recursive)
|
||||
{
|
||||
del_request->set_range_end(range_end);
|
||||
}
|
||||
|
||||
RequestOp* req_success = txn_request->add_success();
|
||||
req_success->set_allocated_request_delete_range(del_request.release());
|
||||
RequestOp* req_success = txn_request->add_success();
|
||||
req_success->set_allocated_request_delete_range(del_request.release());
|
||||
}
|
||||
|
||||
/**
|
||||
* get key, delete
|
||||
*/
|
||||
void etcdv3::Transaction::setup_delete_failure_operation(std::string const &key, std::string const &range_end, bool recursive) {
|
||||
std::unique_ptr<RangeRequest> get_request(new RangeRequest());
|
||||
std::unique_ptr<DeleteRangeRequest> del_request(new DeleteRangeRequest());
|
||||
get_request.reset(new RangeRequest());
|
||||
get_request->set_key(key);
|
||||
if(recursive)
|
||||
{
|
||||
get_request->set_range_end(range_end);
|
||||
get_request->set_sort_target(RangeRequest::SortTarget::RangeRequest_SortTarget_KEY);
|
||||
get_request->set_sort_order(RangeRequest::SortOrder::RangeRequest_SortOrder_ASCEND);
|
||||
}
|
||||
RequestOp* req_failure = txn_request->add_failure();
|
||||
req_failure->set_allocated_request_range(get_request.release());
|
||||
std::unique_ptr<RangeRequest> get_request(new RangeRequest());
|
||||
std::unique_ptr<DeleteRangeRequest> del_request(new DeleteRangeRequest());
|
||||
get_request.reset(new RangeRequest());
|
||||
get_request->set_key(key);
|
||||
if(recursive)
|
||||
{
|
||||
get_request->set_range_end(range_end);
|
||||
get_request->set_sort_target(RangeRequest::SortTarget::RangeRequest_SortTarget_KEY);
|
||||
get_request->set_sort_order(RangeRequest::SortOrder::RangeRequest_SortOrder_ASCEND);
|
||||
}
|
||||
RequestOp* req_failure = txn_request->add_failure();
|
||||
req_failure->set_allocated_request_range(get_request.release());
|
||||
|
||||
del_request.reset(new DeleteRangeRequest());
|
||||
del_request->set_key(key);
|
||||
if(recursive)
|
||||
{
|
||||
del_request->set_range_end(range_end);
|
||||
}
|
||||
del_request.reset(new DeleteRangeRequest());
|
||||
del_request->set_key(key);
|
||||
if(recursive)
|
||||
{
|
||||
del_request->set_range_end(range_end);
|
||||
}
|
||||
|
||||
req_failure = txn_request->add_failure();
|
||||
req_failure->set_allocated_request_delete_range(del_request.release());
|
||||
req_failure = txn_request->add_failure();
|
||||
req_failure->set_allocated_request_delete_range(del_request.release());
|
||||
}
|
||||
|
||||
void etcdv3::Transaction::setup_compare_and_delete_operation(std::string const& key) {
|
||||
std::unique_ptr<DeleteRangeRequest> del_request(new DeleteRangeRequest());
|
||||
del_request->set_key(key);
|
||||
std::unique_ptr<DeleteRangeRequest> del_request(new DeleteRangeRequest());
|
||||
del_request->set_key(key);
|
||||
del_request->set_prev_kv(true);
|
||||
RequestOp* req_success = txn_request->add_success();
|
||||
req_success->set_allocated_request_delete_range(del_request.release());
|
||||
RequestOp* req_success = txn_request->add_success();
|
||||
req_success->set_allocated_request_delete_range(del_request.release());
|
||||
}
|
||||
|
||||
void etcdv3::Transaction::setup_put(std::string const &key, std::string const &value) {
|
||||
std::unique_ptr<PutRequest> put_request(new PutRequest());
|
||||
put_request->set_key(key);
|
||||
put_request->set_value(value);
|
||||
std::unique_ptr<PutRequest> put_request(new PutRequest());
|
||||
put_request->set_key(key);
|
||||
put_request->set_value(value);
|
||||
put_request->set_prev_kv(false);
|
||||
RequestOp* req_success = txn_request->add_success();
|
||||
req_success->set_allocated_request_put(put_request.release());
|
||||
RequestOp* req_success = txn_request->add_success();
|
||||
req_success->set_allocated_request_put(put_request.release());
|
||||
}
|
||||
|
||||
void etcdv3::Transaction::setup_delete(std::string const &key) {
|
||||
std::unique_ptr<DeleteRangeRequest> del_request(new DeleteRangeRequest());
|
||||
del_request->set_key(key);
|
||||
std::unique_ptr<DeleteRangeRequest> del_request(new DeleteRangeRequest());
|
||||
del_request->set_key(key);
|
||||
del_request->set_prev_kv(false);
|
||||
|
||||
RequestOp* req_success = txn_request->add_success();
|
||||
req_success->set_allocated_request_delete_range(del_request.release());
|
||||
RequestOp* req_success = txn_request->add_success();
|
||||
req_success->set_allocated_request_delete_range(del_request.release());
|
||||
}
|
||||
|
||||
etcdv3::Transaction::~Transaction() {
|
||||
|
|
|
|||
|
|
@ -39,28 +39,28 @@ void wait_for_connection(etcd::Client &client) {
|
|||
}
|
||||
|
||||
void initialize_watcher(const std::string& endpoints,
|
||||
const std::string& prefix,
|
||||
std::function<void(etcd::Response)> callback,
|
||||
std::shared_ptr<etcd::Watcher>& watcher) {
|
||||
etcd::Client client(endpoints);
|
||||
wait_for_connection(client);
|
||||
const std::string& prefix,
|
||||
std::function<void(etcd::Response)> callback,
|
||||
std::shared_ptr<etcd::Watcher>& watcher) {
|
||||
etcd::Client client(endpoints);
|
||||
wait_for_connection(client);
|
||||
|
||||
// Check if the failed one has been cancelled first
|
||||
if (watcher && watcher->Cancelled()) {
|
||||
std::cout << "watcher's reconnect loop been cancelled" << std::endl;
|
||||
return;
|
||||
}
|
||||
watcher.reset(new etcd::Watcher(client, prefix, callback, true));
|
||||
watcher.reset(new etcd::Watcher(client, prefix, callback, true));
|
||||
|
||||
// Note that lambda requires `mutable`qualifier.
|
||||
watcher->Wait([endpoints, prefix, callback,
|
||||
/* By reference for renewing */ &watcher](bool cancelled) mutable {
|
||||
// Note that lambda requires `mutable`qualifier.
|
||||
watcher->Wait([endpoints, prefix, callback,
|
||||
/* By reference for renewing */ &watcher](bool cancelled) mutable {
|
||||
if (cancelled) {
|
||||
std::cout << "watcher's reconnect loop stopped as been cancelled" << std::endl;
|
||||
return;
|
||||
}
|
||||
initialize_watcher(endpoints, prefix, callback, watcher);
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
TEST_CASE("watch should can be re-established")
|
||||
|
|
|
|||
Loading…
Reference in New Issue