Упаковка повторных байтов в protobuf-c
Поэтому я пытаюсь сериализовать структуру, содержащую байтовый массив и его размер:
struct Msg {
unsigned char* payload;
size_t payload_size;
};
следующий код использует экземпляр этой структуры под названием msg
,
DiagResp resp = DIAG_RESP__INIT;
ProtobufCBinaryData payload;
payload.data = msg->payload;
payload.len = msg->payload_size;
resp.payload = &payload;
resp.n_payload = msg->payload_size;
resp.has_payload_size = 1;
resp.payload_size = msg->payload_size;
size_t packed_size = diag_resp__get_packed_size(&resp);
printf("packed_size=%lu, msg->received_bytes=%lu\n",
packed_size, msg->received_bytes);
*ret_payload = malloc(packed_size);
diag_resp__pack(&resp, *ret_payload);
это из .proto
файл:
message DiagResp {
...
optional int32 payload_size = 10;
repeated bytes payload = 11;
}
printf
звонок распечатывает это:
packed_size=4256922, msg->received_bytes=4
... но если я не попытаюсь сериализовать payload
поле, все работает как положено. Так как мне сериализовать repeated bytes
поле? Это не охватывается protobuf-c
документация...