Можно ли восстановить файл .proto, когда сообщение использует параметры пакета, импорта и поля?

Моя цель — восстановить потерянные файлы .proto, написанные кем-то еще, из существующих сообщений C ++ protobuf. Используя дескриптор и EnumDescriptor, я смог сделать следующее:

const google::protobuf::EnumDescriptor* logOptionDesc =
bgs::protocol::LogOption_descriptor();
std::string logOptionStr = logOptionDesc->DebugString();

bgs::protocol::EntityId entityId;
const google::protobuf::Descriptor* entityIdDesc = entityId.GetDescriptor();
std::string entityIdStr = entityIdDesc->DebugString();

Строка logOptionStr, которую я получил, выглядела примерно так:

enum LogOption {
HIDDEN = 1;
HEX = 2;
}

и entityIdStr:

message EntityId {
required fixed64 high = 1 [(.bgs.protocol.log) = HEX];
required fixed64 low = 2 [(.bgs.protocol.log) = HEX];
}

Обратите внимание, что сообщение EntityId содержит некоторые параметры поля. Без разрешения этой зависимости я не могу сгенерировать FileDescriptor, который может помочь мне восстановить файлы .proto. Я подозреваю, что строка EntityId должна выглядеть примерно так:

import "LogOption.proto";

package bgs.protocol;

extend google.protobuf.FieldOptions {
optional LogOptions log = HEX;
}

message EntityId {
required fixed64 high = 1 [(.bgs.protocol.log) = HEX];
required fixed64 low = 2 [(.bgs.protocol.log) = HEX];
}

Можно ли восстановить файлы .proto, для которых требуется дополнительная информация, такая как пакет, параметры полей и импорт? Что еще мне нужно сделать, чтобы восстановить файлы .proto?

2

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]