У нас есть канал связи, по которому мы отправляем protobufs. Чтобы иметь возможность отправлять несколько типов протобуфов, мы дважды сериализуем:
message Coprolite {
enum Bezoar {
KBezoarUndef = 0;
KBezoarFriedEggs = 1;
KBezoarHam = 2;
}
Bezoar payload_type = 1;
bytes payload = 2;
}
Если у меня есть FriedEggs
протобуф, я сериализую его, назначаю его полезной нагрузке Coprolite, установите для payload_type значение KBezoarFriedEggs, сериализуйте Coprolite и отправьте его в путь.
При получении я десериализирую, проверяю то, что у меня есть, и десериализую это.
Это работает на всех наших платформ. Я, однако, не нашел примеров того, как другие так поступали (да и вообще никак). Так что это говорит о том, что я должен спросить совета. Есть ли лучшая стратегия или причина, по которой я должен опасаться этого?