Request makeRequest(Request_Header_Type type, const Id &id, const Person &person, bool overwrite, const std::string &trace) { TRACE(std::cout, ""); Request request; Request_Header *hdr = request.mutable_header(); if (!trace.empty() && trace.size()) { hdr->set_trace(trace); } hdr->set_datastoredriverid(PERSON_STORE); Request_Payload *pyld = request.mutable_payload(); std::string k; id.SerializeToString(&k); pyld->set_key(k); switch (type) { case Request_Header_Type_LOOKUP: { hdr->set_type(Request_Header_Type_LOOKUP); break; } case Request_Header_Type_INSERT: { hdr->set_type(Request_Header_Type_INSERT); std::string v; person.SerializeToString(&v); pyld->set_value(v); pyld->set_overwrite(overwrite); break; } case Request_Header_Type_REMOVE: { hdr->set_type(Request_Header_Type_REMOVE); break; } default: throw std::runtime_error("Only one of lookup/insert/remove" " operations supported"); }; return request; }