server/docs/file_tree.md

46 lines
2.2 KiB
Markdown

# 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 для (де)сериализации.