void CaretReplyConverter::onTypedMessage(
    TypedThriftReply<cpp2::McMetagetReply>&& tres, McReply& reply) {

  if (!fillResult(tres, reply)) {
    return;
  }

  if (tres->__isset.age) {
    reply.setNumber(tres->age);
  }
  if (tres->__isset.exptime) {
    reply.setExptime(tres->exptime);
  }
  struct in6_addr addr;

  if (tres->__isset.ipAddress) {
    if (!tres->__isset.ipv) {
      reply.setResult(mc_res_bad_value);
      return;
    }
    int af = (tres->ipv == 6) ? AF_INET6 : AF_INET;
    auto ret = inet_pton(
        af, reinterpret_cast<const char*>(tres->ipAddress.data()), &addr);
    if (ret == 1) {
      reply.setIpAddress(addr, tres->ipv);
    }
  }
}
void CaretReplyConverter::onTypedMessage(
    TypedThriftReply<cpp2::McVersionReply>&& tres, McReply& reply) {
  if (!fillResult(tres, reply)) {
    return;
  }
  if (tres->__isset.value != true) {
    reply.setResult(mc_res_bad_value);
    return;
  }
  reply.setValue(std::move(tres->value));
}