|
lacteApp
C++17 service for Lacte hardware
|
Типы wire-формата, которыми обмениваются по шине lacte: BoardSnapshot (доменное значение) и типы сообщений, построенные поверх него, каждый из которых владеет собственным топиком (если он есть) и собственным wire-кодеком build()/parse() (см. More...
#include <Envelope.hpp>#include <cstdint>#include <optional>#include <stdexcept>#include <string>#include <vector>Go to the source code of this file.
Classes | |
| struct | lacte::bus::BoardSnapshot |
| Моментальный снимок состояния диспенсера/платы, которым обмениваются бэкенд и UI (как запрос/ответ снапшота или как push от бэкенда). More... | |
| struct | lacte::bus::RfidData |
| СЫРЫЕ поля, считанные с текущей подключённой RFID-карты/молочной системы - ДЕРЖАТСЯ ОТДЕЛЬНО от BoardSnapshot (запроса "статус
платы одним взглядом", на который отвечают часто), поскольку эти данные запрашиваются по требованию, реже, и в основном имеют смысл для диагностического/мониторингового вызывающего кода (собственные поля BoardSnapshot milk_system_sn/expiry_date/ remaining_percent уже выводят из этих данных то, что реально нужно ОБЫЧНОМУ UI, см. More... | |
| struct | lacte::bus::HealthRequest |
| Запрос UI -> backend: жив ли бэкенд и здоров ли он? Без payload. More... | |
| struct | lacte::bus::StatusReply |
| Универсальный ответ ok/error, переиспользуемый каждым запросом ниже, которому больше нечего сообщить в ответ. More... | |
| struct | lacte::bus::ParamGetRequest |
| Запрос UI -> backend: прочитать именованный параметр бэкенда. More... | |
| struct | lacte::bus::ParamGetReply |
| Ответ на ParamGetRequest: значение запрошенного параметра. More... | |
| struct | lacte::bus::ParamSetRequest |
| Запрос UI -> backend: записать именованный параметр бэкенда. More... | |
| struct | lacte::bus::SnapshotRequest |
| Запрос UI -> backend: получить полный снапшот устройства по требованию. More... | |
| struct | lacte::bus::SnapshotReply |
| Ответ на SnapshotRequest: полный снапшот состояния устройства. More... | |
| struct | lacte::bus::RfidDataRequest |
| Запрос UI -> backend: получить сырые данные текущей подключённой RFID-карты по требованию (почему это отдельный топик от SnapshotRequest - см. More... | |
| struct | lacte::bus::RfidDataReply |
| Ответ на RfidDataRequest: сырые данные RFID-карты. More... | |
| struct | lacte::bus::TestBoardOnlineRequest |
| Запрос UI -> backend: переключить виртуальную тестовую плату (только для консольного тестирования). More... | |
| struct | lacte::bus::UiCommand |
| Push backend -> UI: команда enable/disable. More... | |
| struct | lacte::bus::BoardSnapshotEvent |
| Push backend -> UI: сериализованный снапшот платы. More... | |
Namespaces | |
| namespace | lacte |
| namespace | lacte::bus |
| namespace | lacte::bus::detail |
Functions | |
| auto | lacte::bus::bool_to_string (const bool value) -> std::string |
| auto | lacte::bus::string_to_bool (const std::string &value) -> bool |
| auto | lacte::bus::string_to_int (const std::string &value) -> int |
| void | lacte::bus::detail::encode_board_snapshot (insitech::bus::Envelope &envelope, const BoardSnapshot &snapshot) |
| auto | lacte::bus::detail::decode_board_snapshot (const insitech::bus::Envelope &envelope) -> BoardSnapshot |
| void | lacte::bus::detail::encode_rfid_data (insitech::bus::Envelope &envelope, const RfidData &data) |
| auto | lacte::bus::detail::decode_rfid_data (const insitech::bus::Envelope &envelope) -> RfidData |
Variables | |
| constexpr auto | lacte::bus::K_PARAM_AERATION = "aeration" |
| Имя параметра бэкенда (и ключ заголовка снапшота) для уровня аэрации. | |
Типы wire-формата, которыми обмениваются по шине lacte: BoardSnapshot (доменное значение) и типы сообщений, построенные поверх него, каждый из которых владеет собственным топиком (если он есть) и собственным wire-кодеком build()/parse() (см.
protolib's protocols/bus/Bus.hpp о том, как тип с топиком используется с Publish/Subscribe/Serve/Request).
Тип сообщения несёт K_TOPIC только если что-то реально публикует его или подписывается на него напрямую (запрос или push-событие). Типы, используемые только как ответ (StatusReply, ParamGetReply, SnapshotReply), не имеют собственного топика - топик, по которому они путешествуют, это Req::K_TOPIC того запроса, на который они отвечают (см. Hub::Serve<Req, Reply>()/Hub::Request<Req, Reply>()), поэтому присвоить им топик было бы бессмысленно, а не просто "забыто".
Значения K_TOPIC намеренно КОРОТКИЕ, простые имена ("health", а не "lacte.backend.health") - модуль, который Serve()ит/Advertise()ит такой топик (ModelBusClient/UiBusClient, у каждого свой реальный identity.name, см. их собственный Create()), уже автоматически получает его с пространством имён вида "<identity.name общей шины>.<identity.name этого модуля>.<K_TOPIC>", разрешаемым через Hub::resolve_name() (см. protocols/bus/ROADMAP.md из protolib, раздел "dynamic topic naming"). Вызовы Publish/Subscribe/ Serve/Request внутри одного процесса (всё в этом файле - Model и UI живут в ОДНОМ бинарнике lacteApp) продолжают использовать K_TOPIC напрямую; составное имя имеет значение только для по-настоящему удалённого/межшинного вызывающего кода.
Definition in file Envelopes.hpp.