В настоящее время я переделываю наш существующий собственный код обертки сокетов, чтобы использовать boost asio, чтобы он мог сделать для нас часть тяжелой работы. Возможно, наиболее сложной областью нашего существующего кода является код многоадресной обработки. Код позволяет нашим серверам среднего уровня (которых может быть много в одной системе) отправлять многоадресные рассылки на клиентские ящики, которые используют их для представления обновлений пользователям системы.
Причина, по которой код сложен и подвержен ошибкам, заключается в том, что он использует ряд необработанных буферов для повторной сборки многоадресных потоков в соответствии с тем, откуда они поступили. Похоже, что даже с Boost.Asio мне придется иметь дело с этой же проблемой, поэтому, прежде чем я застряну, я подумал, что стоит спросить, как другие люди справились с этой ситуацией.
Кажется, это очень распространенный вариант использования. Есть ли что-нибудь, что может помочь мне сделать эту работу без того кода, который у меня есть сейчас? Или существует установленный шаблон C ++ (Boost или иным образом), который может выполнять такую работу?
Очевидно, я мог бы упростить для себя задачу и использовать контейнеры STL для буферизации пакетов вместо необработанных массивов, но этот код должен быть действительно высокопроизводительным. При больших установках огромное количество пакетов летает вокруг, и оно должно реагировать как можно ближе к реальному времени.
Заранее спасибо за любые мысли по этому вопросу.
Jamie