can_list_to_can_capnp_cpp: write message directly to the output string (#19912)

pull/19895/head
Dean Lee 4 years ago committed by GitHub
parent 5c58a2618e
commit d17a5195e7
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
  1. 6
      selfdrive/boardd/can_list_to_can_capnp.cc

@ -22,8 +22,10 @@ void can_list_to_can_capnp_cpp(const std::vector<can_frame> &can_list, std::stri
c.setDat(kj::arrayPtr((uint8_t*)it->dat.data(), it->dat.size())); c.setDat(kj::arrayPtr((uint8_t*)it->dat.data(), it->dat.size()));
c.setSrc(it->src); c.setSrc(it->src);
} }
auto bytes = msg.toBytes(); const uint64_t msg_size = capnp::computeSerializedSizeInWords(msg) * sizeof(capnp::word);
out.append((const char *)bytes.begin(), bytes.size()); out.resize(msg_size);
kj::ArrayOutputStream output_stream(kj::ArrayPtr<capnp::byte>((unsigned char *)out.data(), msg_size));
capnp::writeMessage(output_stream, msg);
} }
} }

Loading…
Cancel
Save