Comments 13
Жду статью: "restinio + sobjectizer — утилизируй сервер полностью" :-)
Точно! Я уж и забыл про них… Пойду перечитаю))
Но все же… Если restinio и sobjectizer завернуть что-то похожее на osgi платформу, добавить плагинную систему, то получится хрорший сервер приложений, ну или как теперь модно, микросервисный фреймворк.
Сам по себе easy_parser — это один hpp-файл easy_parser.hpp. Плюс к нему еще файл http_field_parsers/basics.hpp с реализацией вещей, описанных в HTTP-шных RFC.
Реализация easy_parser-а завязана на следующие вещи:
- тонкие обертки вокруг библиотек optional-lite и expected-lite (фактически, там только определение псевдонимов вида string_view_t и expected_t + внесение некоторых имен в нужный нам неймспейс);
- класс для исключений (единый класс, используемый во всем RESTinio);
- набор вспомогательных средств для метапрограммирования (самодостаточный файл metaprogramming.hpp);
- набор вспомогательных средств для выполнения операций над туплами. Это практически самодостаточный файл tuple_algorithms.hpp, который завязан только на определение макроса RESTINIO_NODISCARD. Если вы можете использовать C++17, то содержимое этого tuple_algorithms можно сделать гораздо проще;
- макрос RESTINIO_NODISCARD, который скрывает в себе директиву
[[nodiscard]]
, если таковая компилятором поддерживается. Запросто можно выбросить. А если компилятор поддерживает C++17, то заменить на[[nodiscard]]
; - практически самодостаточную реализацию to_lower, которая зависит только от RESTINIO_NODISCARD;
- практически самодостаточную реализацию аккумулятора целочисленных значений с контролем их переполнения. Опять же зависимость только от RESTINIO_NODISCARD.
В http_field_parsers/basics.hpp
есть еще завязка на практически самодостаточную string_caseless_compare. Там используются RESTINIO_NODISCARD и string_view_t.
Так что вытащить это из RESTinio не так уж и сложно.
Но оформлять easy_parser в виде отдельного проекта мы сейчас не будем, на это нет ни времени, ни ресурсов.
Сколько кода на C++ нужно написать для разбора HTTP-заголовка Authorization с помощью easy_parser из RESTinio?