preparation for merge

This commit is contained in:
lampayan 2016-06-07 15:37:09 +02:00
parent 261bf7deac
commit 2e858aa26b
3 changed files with 60 additions and 27 deletions

View File

@ -21,7 +21,7 @@ public:
etcdserverpb::DeleteRangeResponse deleteResponse;
grpc::Status status;
grpc::ClientContext context;
grpc::CompletionQueue completionQueue;
grpc::CompletionQueue cq_;
std::unique_ptr<grpc::ClientAsyncResponseReader<etcdserverpb::DeleteRangeResponse>> rpcInstance;
};
}

View File

@ -6,6 +6,7 @@
#include <vector>
#include "etcd/Value.hpp"
#include <grpc++/grpc++.h>
namespace etcd
{
@ -19,6 +20,37 @@ namespace etcd
public:
static pplx::task<Response> create(pplx::task<web::http::http_response> response_task);
//parang mas magandang ilagay ito sa baseclass imbis na here ooorrr
//talagang response v2 lang talaga dito
template<typename T>static pplx::task<etcd::Response> create(T call)
{
return pplx::task<etcd::Response>([call]()
{
void* got_tag;
bool ok = false;
etcd::Response resp;
//blocking
call->cq_.Next(&got_tag, &ok);
GPR_ASSERT(got_tag == (void*)call);
GPR_ASSERT(ok);
T call = static_cast<T>(got_tag);
if(call->status.ok())
{
// auto v3resp = call->ParseResponse();
resp = *call;// stripping off instead of creating a new response class
}
else
{
throw std::runtime_error(call->status.error_message());
}
delete call; //todo:make this a smart pointer
return resp;
});
};
Response();
/**

View File

@ -118,40 +118,41 @@ pplx::task<etcd::Response> etcd::Client::removeEntry(std::string const & entryKe
}
//then delete
std::cout << "removing etcd v3 entry naman" << std::endl;
std::cout << "removing etcd v3 entry naman with template na" << std::endl;
etcdserverpb::DeleteRangeRequest deleteRangeRequest;
deleteRangeRequest.set_key(entryKey);
drp->rpcInstance = stub_->AsyncDeleteRange(&drp->context, deleteRangeRequest, &drp->completionQueue);
drp->rpcInstance = stub_->AsyncDeleteRange(&drp->context, deleteRangeRequest, &drp->cq_);
drp->rpcInstance->Finish(&drp->deleteResponse, &drp->status, (void*)drp);
return pplx::task<etcd::Response>([drp]()
{
std::cout << "doing delete v3 entry task" << std::endl;
void* got_tag;
bool ok = false;
etcd::Response resp;
return Response::create(drp);
drp->completionQueue.Next(&got_tag, &ok);
GPR_ASSERT(got_tag == (void*)drp);
GPR_ASSERT(ok);
etcd::DeleteRpcResponse* deleteResponse = static_cast<etcd::DeleteRpcResponse*>(got_tag);
if (deleteResponse->status.ok()){
std::cout << "doing delete v3 entry task OK" << std::endl;
resp = *drp; //simply stripping off the response part
}
else
std::cout << "doing delete v3 entry task NOK" << std::endl;
delete deleteResponse;
std::cout << "delete done, returning" << std::endl;
return resp;
}
);
// return pplx::task<etcd::Response>([drp]()
// {
// std::cout << "doing delete v3 entry task" << std::endl;
// void* got_tag;
// bool ok = false;
// etcd::Response resp;
//
// drp->completionQueue.Next(&got_tag, &ok);
// GPR_ASSERT(got_tag == (void*)drp);
// GPR_ASSERT(ok);
//
// etcd::DeleteRpcResponse* deleteResponse = static_cast<etcd::DeleteRpcResponse*>(got_tag);
//
// if (deleteResponse->status.ok()){
// std::cout << "doing delete v3 entry task OK" << std::endl;
// resp = *drp; //simply stripping off the response part
// }
// else
// std::cout << "doing delete v3 entry task NOK" << std::endl;
// delete deleteResponse;
// std::cout << "delete done, returning" << std::endl;
// return resp;
// }
// );
}