Библиотека message_consumer_api

Библиотека 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; };

...

}

...

В начало