Упаковка повторных байтов в 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 документация...

0 ответов

Другие вопросы по тегам