mirror of
https://github.com/capnproto/pycapnp.git
synced 2025-03-04 16:35:04 +01:00
20 lines
No EOL
609 B
C
20 lines
No EOL
609 B
C
#pragma once
|
|
|
|
#include "kj/io.h"
|
|
#include "capnp/dynamic.h"
|
|
#include "capnp/serialize-packed.h"
|
|
|
|
kj::Array< ::capnp::byte> messageToPackedBytes(capnp::MessageBuilder & message)
|
|
{
|
|
auto segments = message.getSegmentsForOutput();
|
|
size_t totalSize = segments.size() / 2 + 1;
|
|
|
|
for (auto& segment: segments) {
|
|
totalSize += segment.size();
|
|
}
|
|
|
|
kj::Array<capnp::byte> result = kj::heapArray<capnp::byte>(totalSize * 8);
|
|
kj::ArrayOutputStream out(result.asPtr());
|
|
capnp::writePackedMessage(out, message);
|
|
return heapArray(out.getArray()); // TODO: make this non-copying somehow
|
|
} |