Example #1
0
void WriteBuffer::clear() {
  ctx_.clear();
  reply_.clear();
  um_backing_msg_cleanup(&umMsg_);
  um_backing_msg_init(&umMsg_);
  mc_ascii_response_buf_cleanup(&asciiResponse_);
  mc_ascii_response_buf_init(&asciiResponse_);
}
Example #2
0
int um_emit_iovs_extended(um_backing_msg_t* bmsg,
                          uint64_t reqid,
                          mc_msg_t* msg,
                          struct iovec* value_iovs,
                          size_t n_value_iovs,
                          emit_iov_cb* emit_iov,
                          void* context) {

  FBI_ASSERT(bmsg && !bmsg->inuse && msg && msg->op != mc_op_end && emit_iov);
  _backing_msg_fill(bmsg, reqid, msg, value_iovs, n_value_iovs);

  if (entry_list_emit_iovs(&bmsg->elist, emit_iov, context)) {
    um_backing_msg_cleanup(bmsg);
    return -1;
  }

  return 0;
}
Example #3
0
ssize_t um_write_iovs_extended(um_backing_msg_t* bmsg,
                               uint64_t reqid,
                               mc_msg_t* msg,
                               struct iovec* value_iovs,
                               size_t n_value_iovs,
                               struct iovec* iovs,
                               size_t n_iovs) {

  FBI_ASSERT(bmsg && !bmsg->inuse && msg && msg->op != mc_op_end && iovs);
  _backing_msg_fill(bmsg, reqid, msg, value_iovs, n_value_iovs);

  int iovs_used = entry_list_to_iovecs(&bmsg->elist, iovs, n_iovs);
  if (iovs_used <= 0) {
    um_backing_msg_cleanup(bmsg);
    return -1;
  }

  return iovs_used;
}
Example #4
0
TEST(umbrella, iovecSerialize) {
  size_t nIovs = 3;
  char value[] = "value";
  iovec iovs[] = {{&value[0], 1}, {&value[1], 2}, {&value[3], 2}};

  um_backing_msg_t bmsg;
  um_backing_msg_init(&bmsg);

  uint64_t reqId = 1;
  mc_msg_t msg;
  mc_msg_init_not_refcounted(&msg);
  msg.op = mc_op_get;
  msg.result = mc_res_found;
  msg.flags = 0x4;

  // Verify emitIov
  std::string serializedVal = "";
  EXPECT_EQ(
      um_emit_iovs_extended(
          &bmsg, reqId, &msg, iovs, nIovs, emitIov, (void *)&serializedVal),
      0);

  verifySerializedValue(serializedVal, reqId, &msg, value);


  // Verify writeIov
  um_backing_msg_cleanup(&bmsg);
  um_backing_msg_init(&bmsg);
  serializedVal = "";
  reqId++;

  iovec output[20];
  ssize_t nOutIovs = um_write_iovs_extended(&bmsg, reqId, &msg,
                                            iovs, nIovs, output, 20);
  EXPECT_GE(nOutIovs, 1);
  for (int i = 0; i < nOutIovs; i++) {
    serializedVal.append((const char *)output[i].iov_base, output[i].iov_len);
  }

  verifySerializedValue(serializedVal, reqId, &msg, value);
}
Example #5
0
McServerTransaction::~McServerTransaction() {
    session_->onTransactionCompleted(isSubRequest_);

    um_backing_msg_cleanup(&umMsg_);
    mc_ascii_response_buf_cleanup(&asciiResponse_);
}
Example #6
0
McProtocolSerializer::RequestContext::~RequestContext() {
  um_backing_msg_cleanup(&umBackingMsg_);
}