Pet_project: HTTP сервис для выдачи файлов по запросу . Список, находящихся в доступе файлов, автоматически поддерживаемый в актуальном состоянии, хранится в БД. Осуществляется логирование http запросов, логирование запросов к БД и логирование изменения состояния файлохранилища.
Содержит:
- Client_HTTP - многопоточный HTTP клиент на Boost.Asio и Boost.Beast c применением stackful coroutines (главная цель написания - тестирование сервера Server_HTTP)
- DB_module - модуль для работы с БД, содержит пул потоков, пул коннектов, класс, осуществляющий взаимодействие с БД (используется PostgreSql), класс, хранящий результаты запроса и методы раюоты с этим результатом.
- Download - директория для загруженных через Client_HTTP файлов.
- Handler - содержит классы обработчиков запросов, получаемых http сервером (Server_HTTP), и обработчиков событий, фиксируемых модулем отслеживания состояния папки с предоставляемыми файлами (Inotify_module).
- Inotify_module - модуль для отслеживания изменений в директории с файлами для выдачи, на основе подсистемы Inotify ядра Linux.
- Logger - содержит классы для осуществления логирования событий.
- Server_HTTP - многопоточный HTTP сервер на Boost.Asio и Boost.Beast c применением stackless coroutines, приём и обработка запросов на выдачу списка доступных файлов, таблицы логов, самих файлов.
- ini_and_parser - содержит файл для конфигурации всех комопонентов сервиса и классы для парсинга конфигурационного файла.
- ini_and_parser/Tests - Unit-тесты (применяется GoogleTest framework) парсера конфигурационного файла.
- DB_module/Tests - Unit-тесты (применяется GoogleTest framework) модуля для работы с БД (DB_module).
- logs_folder - директория для хранения файлов с логами.
- scripts_for_DB - bash скрипты для создания БД и таблиц для сервиса.
- songs_folder - директория для хранения доступных файлов.