Библиотека message_consumer_api содержит классы, описывающие специальные типы для передачи сообщений и интерфейс IMessageConsumer, содержащий метод для передачи сообщений.
Чтобы получить доступ к API библиотеки, скомпонуйте вашу программу с библиотекой, используя CMake-команду target_link_libraries().
CMakeLists.txt
target_link_libraries(${EXECUTABLE_NAME} message_consumer_api)
Интерфейс IMessageConsumer
Интерфейс IMessageConsumer предоставляет метод для передачи сообщений.
Для получения экземпляра интерфейса используется функция messaging::CreateMessageConsumerProxy(), принимающий имя серверной задачи, принимающей запросы, и имя сервиса. Описание метода messaging::CreateMessageConsumerProxy() представлено в файле /opt/KasperskyOS-SDK-KISG-Platform-<version>/sysroot-*-kos/include/secure_gateway/message_consumer_api/include/message_consumer_api/message_consumer_proxy_factory.h.
message_consumer_proxy_factory.h (фрагмент)
namespace messaging {
std::unique_ptr<IMessageConsumer> CreateMessageConsumerProxy(const std::string& server, const std::string& service);
}
Для передачи сообщения используется метод IMessageConsumer::Consume(), отправляющий сообщения принимающей стороне. Метод принимает непустой список сообщений MessageList (до 32 элементов). Метод возвращает значение kos::rtl::Ok в случае успешной передачи всех сообщений из списка и kos::rtl::Fail в случае ошибки при передаче. Метод IMessageConsumer::Consume() не предоставляет данных о количестве переданных сообщений в случае возникновения ошибки.
Этот интерфейс является часть интерфейса IMessageReceiver библиотеки message_stub и реализуется программой, принимающей сообщения.
Описание интерфейса IMessageConsumer представлено в файле /opt/KasperskyOS-SDK-KISG-Platform-<version>/sysroot-*-kos/include/secure_gateway/message_consumer_api/include/message_consumer_api/message_consumer.h.
message_consumer.h (фрагмент)
namespace messaging {
class IMessageConsumer
{
...
virtual kos::rtl::Result Consume(
const messaging::MessageList& messages) noexcept = 0;
...
};
}
Класс messaging::Attribute
Класс messaging::Attribute описывает атрибуты сообщения в формате ключ-значение. Ключ может содержать до 32 символов, значение – до 256 символов. Один или несколько экземпляров класса messaging::Attribute могут объединяться в вектор AttributeList. Описание класса messaging::Attribute представлено в файле /opt/KasperskyOS-SDK-KISG-Platform-<version>/sysroot-*-kos/include/secure_gateway/message_consumer_api/include/message_consumer_api/attribute.h.
attribute.h (фрагмент)
...
class Attribute
{
public:
explicit Attribute(const std::string& key, const std::string& value)
: m_key(key), m_value(value)
{}
const std::string& GetKey() const noexcept { return m_key; }
const std::string& GetValue() const noexcept { return m_value; }
...
}
...
Класс messaging::DataItem
Класс messaging::DataItem описывает сырые данные сообщения со списком атрибутов AttributeList. Сырые данные сообщения могут содержать до 256 Б данных. Список атрибутов может включать до четырех пар ключ-значение. Один или несколько экземпляров класса messaging::DataItem могут объединяться в вектор DataItemList. Описание класса messaging::DataItem представлено в файле /opt/KasperskyOS-SDK-KISG-Platform-<version>/sysroot-*-kos/include/secure_gateway/message_consumer_api/include/message_consumer_api/data_item.h.
data_item.h (фрагмент)
...
class DataItem
{
public:
using Blob = std::vector<char>;
explicit DataItem(const Blob& payload, const AttributeList& attributes)
: m_payload(payload), m_attributes(attributes)
{}
const Blob& GetPayload() const noexcept { return m_payload; }
const AttributeList& GetAttributes() const noexcept { return m_attributes; }
...
}
...
Класс messaging::Message
Класс messaging::Message описывает отправителя, получателя и список данных сообщения DataItemList. Получатель и отправитель передаются в виде конечных точек программ типа applications::routing::EndpointName. Вы можете получить список конечных точек программ с помощью API программы RoutingTable. Список данных сообщения может включать до 32 элементов класса messaging::DataItem. Один или несколько экземпляров класса messaging::Message могут объединяться в вектор MessageList. Описание класса messaging::Message представлено в файле /opt/KasperskyOS-SDK-KISG-Platform-<version>/sysroot-*-kos/include/secure_gateway/message_consumer_api/include/message_consumer_api/message.h.
message.h (фрагмент)
...
class Message
{
public:
explicit Message(const applications::routing::EndpointName& source,
const applications::routing::EndpointName& destination,
const DataItemList& list)
: m_source(source)
, m_destination(destination)
, m_dataItems(list)
{}
const DataItemList& GetItems() const noexcept { return m_dataItems; }
const applications::routing::EndpointName& GetSourceEndpointName() const noexcept { return m_source; };
const applications::routing::EndpointName& GetDestinationEndpointName() const noexcept { return m_destination; };
...
}
...
В начало