У меня есть структура данных графа, которую я хотел бы закодировать с помощью буферов протокола . Между вершинами графа существуют циклические связи. Существует ли стандартный / общий способ кодирования таких структур в protobuf? Один подход, который приходит на ум, - это добавить поле «id» в каждую вершину и использовать эти идентификаторы вместо указателей. E.g.:
message Vertex {
required int32 id = 1;
required string label = 2;
repeated int32 outgoing_edges = 3; // values should be id's of other nodes
}
message Graph {
repeated Vertex vertices = 1;
}
Тогда я мог бы написать классы, которые обертывают сгенерированные протобуфом классы, и автоматически преобразовывать эти идентификаторы в реальные указатели при десериализации (и обратно в идентификаторы при сериализации). Это лучший подход? Если так, то кто-нибудь знает о существующих проектах, которые используют / документируют этот подход? Если нет, то какой подход вы бы порекомендовали?