lacteApp
C++17 service for Lacte hardware
Loading...
Searching...
No Matches
Envelopes.hpp File Reference

Типы wire-формата, которыми обмениваются по шине lacte: BoardSnapshot (доменное значение) и типы сообщений, построенные поверх него, каждый из которых владеет собственным топиком (если он есть) и собственным wire-кодеком build()/parse() (см. More...

#include <Envelope.hpp>
#include <cstdint>
#include <optional>
#include <stdexcept>
#include <string>
#include <vector>
Include dependency graph for Envelopes.hpp:
This graph shows which files directly or indirectly include this file:

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"
 Имя параметра бэкенда (и ключ заголовка снапшота) для уровня аэрации.

Detailed Description

Типы 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.