Ejemplo n.º 1
0
 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;
 }