Как используя protobuf принять объект неизвестного типа?
У меня такая задача - два приложения будут обмениваться данными по сети с помощью protobuf. В protobuf есть возможность сохранить/восстановить обект из сетевого потока с помощью функции ParseFromIstream / SerializeToOstream. Проблема в том что она член класса объекта - т.е. я заранее должен знать какого класса объект мне придёт. А я этого не знаю, они приходят в случайном порядке. Мне надо чтобы была возможность читать поток, понимать какой объект сейчас пришел и создавать соответствующий класс. Раньше я это делал с помощью собственного протокола, но это вроде как нехорошо, надо бы сделать чрез какой-нибудь стандартный вроде protobuf. Пока не могу придумать как это сделать с помощью protobuf, и уже есть мысли использовать вместо него JSON, хотя в остальном protobuf подходит нааамного лучше чем JSON. Буду признателен за помощь.
Самый разумный путь здесь дописывать в начало сообщения номер protobuf-типа, а потом уже сам protobuf-объект. Понятно, что предварительно обе стороны должны договориться какому номеру какой тип соответсвует.