# nm17/iotishnik-server [Rust] Стандартная структура проекта на Rust с Cargo. Ниже описано содержимое `src/`. - `main.rs`: точка входа, запускает сервер (см. [web_server](#web_server) и [ingest_socket_server](#ingest_socket_server)) ## ingest_protocol - `packet_types.rs`: структуры для хранения данных с датчиков, вспомогательные функции интеграции с serde и записи в БД. - `parser.rs`: парсер пакетов в формате старого TCP/UDP API с #решётками#, парсер MAC-ов. - `error.rs`: enum для ошибок в этом модуле. - `tests/`: тесты. ## ingest_socket_server Сервер TCP/UDP API (work in progress). ## web_server Сервер HTTP API на библиотеке Ntex. - `mod.rs`: предоставляет функцию запуска веб-сервера. - `app_error.rs`: enum для ошибок в этом модуле. ### web_server/old_app_api HTTP API "Народного мониторинга" для приложений. - `handlers/`: обработчики запросов. - `types/`: структуры JSON-а запросов и ответов. ### web_server/old_device_sensor_api HTTP API "Народного мониторинга" для загрузки данных с датчиков на сервер. - `mod.rs`: основной обработчик запросов. - `qs_parser.rs`: парсер аргументов GET-запроса / тела POST-запроса в формате x-www-form-urlencoded. ### web_server/utils - `mod.rs`: вспомогательные функции и макросы к веб-серверу. - `redis.rs`: утилиты для работы с Redis-совместимой БД. ## utils Вспомогательные структуры данных и функции. - `mod.rs`: пока что только enum поддерживаемых единиц измерения, конвертация типов. - `hifitime_serde.rs`: интеграция hifitime::Epoch с serde для (де)сериализации.