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; etcdserverpb::DeleteRangeResponse deleteResponse;
grpc::Status status; grpc::Status status;
grpc::ClientContext context; grpc::ClientContext context;
grpc::CompletionQueue completionQueue; grpc::CompletionQueue cq_;
std::unique_ptr<grpc::ClientAsyncResponseReader<etcdserverpb::DeleteRangeResponse>> rpcInstance; std::unique_ptr<grpc::ClientAsyncResponseReader<etcdserverpb::DeleteRangeResponse>> rpcInstance;
}; };
} }

View File

@ -6,6 +6,7 @@
#include <vector> #include <vector>
#include "etcd/Value.hpp" #include "etcd/Value.hpp"
#include <grpc++/grpc++.h>
namespace etcd namespace etcd
{ {
@ -19,6 +20,37 @@ namespace etcd
public: public:
static pplx::task<Response> create(pplx::task<web::http::http_response> response_task); 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(); Response();
/** /**

View File

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