Exemplo n.º 1
0
void verifySerializedValue(const std::string& serializedVal,
                           uint64_t expectedReqId,
                           mc_msg_t* expectedMsg,
                           const char* value) {
  // check if the value was serialized correctly
  um_parser_t parser;
  EXPECT_EQ(um_parser_init(&parser), 0);

  uint64_t parsedReqId = -1;
  mc_msg_t* parsedMsg = nullptr;

  EXPECT_EQ(um_consume_one_message(&parser,
                                   (uint8_t *)serializedVal.c_str(),
                                   serializedVal.length(),
                                   &parsedReqId,
                                   &parsedMsg),
            serializedVal.length());

  EXPECT_NE(parsedMsg, nullptr);
  EXPECT_EQ(parsedReqId, expectedReqId);
  EXPECT_EQ(parsedMsg->op, expectedMsg->op);
  EXPECT_EQ(parsedMsg->result, expectedMsg->result);
  EXPECT_EQ(parsedMsg->flags, expectedMsg->flags);
  EXPECT_EQ(parsedMsg->value.len, strlen(value));
  EXPECT_EQ(strncmp(parsedMsg->value.str, value, strlen(value)), 0);

  mc_msg_decref(parsedMsg);
}
Exemplo n.º 2
0
int um_consume_buffer(um_parser_t* um_parser,
                      const uint8_t* buf, size_t nbuf,
                      msg_ready_cb* msg_ready,
                      void* context) {
  while (nbuf > 0) {
    uint64_t reqid;
    mc_msg_t* msg;
    ssize_t consumed = um_consume_one_message(um_parser,
                                              buf, nbuf, &reqid, &msg);
    if (consumed <= 0) {
      return -1;
    }
    FBI_ASSERT(consumed <= nbuf);
    if (msg != NULL) {
      msg_ready(context, reqid, msg);
      buf += consumed;
      nbuf -= consumed;
    } else {
      FBI_ASSERT(consumed == nbuf);
      break;
    }
  }
  return 0;
}