LINUX.ORG.RU

История изменений

Исправление utf8nowhere, (текущая версия) :

Как вообще принято реализовывать подобные вещи?

Если говорить про разбор протоколов, то один из подходов — т.н. sans-IO. Где разбор протокола, как можно догадаться по названию, отделяется от IO. Парсер становится автоматом, который на вход принимает байт (или буфер, для оптимизации), а на выходе выдаёт события/инструкции типа: НАЧАЛ_ЧИТАТЬ_СТРОКУ, ЗАКОНЧИЛ_ЧИТАТЬ_СТРОКУ или ДАЙ_ИЩО_БАЙТОВ

Это даёт свободу в способе добычи байтов: читать из fd, из FILE, из memory-mapped файла, синхронно или асинхронно.

Исходная версия utf8nowhere, :

Как вообще принято реализовывать подобные вещи?

Если вопрос про разбор протокола, то один из подходов — т.н. sans-IO. Где разбор протокола, как можно догадаться по названию, отделяется от IO. Парсер становится автоматом, который на вход принимает байт (или буфер, для оптимизации), а на выходе выдаёт события/инструкции типа: НАЧАЛ_ЧИТАТЬ_СТРОКУ, ЗАКОНЧИЛ_ЧИТАТЬ_СТРОКУ или ДАЙ_ИЩО_БАЙТОВ

Это даёт свободу в способе добычи байтов: читать из fd, из FILE, из memory-mapped файла, синхронно или асинхронно.