У меня есть встроенное приложение, которое связывается с сервером RESTful через HTTP. Некоторые службы включают в себя отправку некоторых данных клиенту, которые интерпретируются с использованием очень простого лексера, который я написал, используя flex .
Сейчас я нахожусь в процессе добавления слоя сжатия gzip, чтобы уменьшить потребление пропускной способности, но меня не устраивает текущая архитектура из-за требований к памяти: сначала я получаю все данные в буфере, затем распаковываю весь буфер в новый буфер, а затем я подаю все данные на гибкость.
Я могу сохранить часть памяти между первым и вторым шагами, передавая фрагментированные данные из HTTP-клиента в подпрограммы zlib. Но мне интересно, возможно ли сделать то же самое между выводом zlib chunked и вводом flex.
В настоящее время я использую только yy_scan_bytes
и yylex
для анализа ввода. Есть ли у flex какая-либо функция для подачи нескольких порций данных в yylex
? Я прочитал документацию о нескольких входных буферах , но безрезультатно.