дано: некоторый составной тип, который сериализуется в byte-массив. каждый такой byte-массив кладется в очередь для последующей отправки.
проблема: допустим, в очередь положили несколько типов состоящих из двух int32. очередь не успела отправить все получившиеся byte-массивы, а мы добавляет в составной тип еще один int32. и тут начинается веселье, ибо в очереди оказываются два разных типа, которые требуют разной обработки на стороне получателя.
вопрос в том, как идентифицировать эти byte-массивы, точнее то, из чего они получаются?
составные типы могут содержать не только фундаментальные типы.
Здравствуйте, niXman, Вы писали:
X>проблема: допустим, в очередь положили несколько типов состоящих из двух int32. очередь не успела отправить все получившиеся byte-массивы, а мы добавляет в составной тип еще один int32.
Это вопрос о версионировании, об очереди или о сериализации? Предлагаю выкинуть очередь из вопроса и уточнить сам вопрос
Здравствуйте, niXman, Вы писали:
X>выскажитесь, пожалуйста, по сабжу.
Очередь, сериализация и протокол передачи — это три разных сущности и, наверное, их следует как-то выразить программными средствами.
У меня очередь параметризуется типом передаваемого сообщения ( queue<yas::shared_buffer> ), сериализацией и десериализацией занимаются отдельные наборы кодеков (оформленные в виде библиотек) которые запаковывают и распаковывают сообщения в соответствии с написанными в документации протоколами.
При этом есть ещё четвёртая сущность — события, которые уведомляют о наличии данных в очередях.
Здравствуйте, niXman, Вы писали:
X>привет!
X>название чудное получилось...
X>дано: некоторый составной тип, который сериализуется в byte-массив. каждый такой byte-массив кладется в очередь для последующей отправки. X>проблема: допустим, в очередь положили несколько типов состоящих из двух int32. очередь не успела отправить все получившиеся byte-массивы, а мы добавляет в составной тип еще один int32. и тут начинается веселье, ибо в очереди оказываются два разных типа, которые требуют разной обработки на стороне получателя.
Я бы поглядел в сторону Google.Protobuf или Apache Thrift, ибо проблема действительно не в очереди и байтах, а в прикладном уровне: если при сериализации такие проблемы, то представьте себе, что будет при ДЕсериализации.
Здравствуйте, B0FEE664, Вы писали:
BFE>У меня очередь параметризуется типом передаваемого сообщения ( queue<yas::shared_buffer> )
если проект не закрытый, добавь плиз на него ссылку сюда: https://github.com/niXman/yas#projects-using-this-library
пачка бумаги А4 стОит 2000 р, в ней 500 листов. получается, лист обычной бумаги стОит дороже имперского рубля =)
Здравствуйте, niXman, Вы писали:
BFE>>У меня очередь параметризуется типом передаваемого сообщения ( queue<yas::shared_buffer> ) X>если проект не закрытый, добавь плиз на него ссылку сюда: https://github.com/niXman/yas#projects-using-this-library