38 lines
984 B
C++
38 lines
984 B
C++
#include "v3/include/AsyncWatchResponse.hpp"
|
|
#include "v3/include/action_constants.hpp"
|
|
|
|
void etcdv3::AsyncWatchResponse::ParseResponse(WatchResponse& reply)
|
|
{
|
|
index = reply.header().revision();
|
|
for(int cnt =0; cnt < reply.events_size(); cnt++)
|
|
{
|
|
auto event = reply.events(cnt);
|
|
if(mvccpb::Event::EventType::Event_EventType_PUT == event.type())
|
|
{
|
|
if(event.kv().version() == 1)
|
|
{
|
|
action = etcdv3::CREATE_ACTION;
|
|
}
|
|
else
|
|
{
|
|
action = etcdv3::SET_ACTION;
|
|
}
|
|
value.kvs = event.kv();
|
|
|
|
}
|
|
else if(mvccpb::Event::EventType::Event_EventType_DELETE == event.type())
|
|
{
|
|
action = etcdv3::DELETE_ACTION;
|
|
value.kvs = event.kv();
|
|
}
|
|
if(event.has_prev_kv())
|
|
{
|
|
prev_value.kvs = event.prev_kv();
|
|
}
|
|
// just store the first occurence of the key in values.
|
|
// this is done so tas client will not need to change their behaviour.
|
|
// break immediately
|
|
break;
|
|
}
|
|
}
|