ILoadBalancer::Marshal
Перейти к навигации
Перейти к поиску
return_code_t PLATFORM_NATIVE_CALLING_CONVENTION Marshal(
const char* pDomainName, size_type cchDomainName, std::uint32_t nFormat, IOutputStream* pOs) const noexcept;
Производит запись ссылки на балансировщик нагрузки в выходной поток IOutputStream.
- Параметры
[in] pDomainName Строковой идентификатор экземпляра подсистемы предметной области, для которого осуществляется запись в поток. Строку не нужно завершать терминальным нулем. cchDomainName Длина строки pDomainName в байтах. nFormat Задает формат, по которому осуществляется в поток. Формат задается одной из констант перечисления DefinitionFormat: Символическое имя Целочисленное значение Описание DEFINED_AS_BINARY 1 Данные запакованы в двоичном виде. См. package. DEFINED_AS_XML 2 Данные запакованы в XML виде. Не поддерживается. [in] pOs Поток для записи ссылки на балансировщик. - Возвращаемое значение:
- 32-битовый целый код ошибки, который в случае успешного выполнения неотрицателен.
- См. также
DemarshalLoadBalancer Осуществляет демаршаллинг ссылки на балансировщик нагрузки из потока чтения и возвращает реализацию интерфейса ILoadBalancer, адресующую балансировщик через прочитанную ссылку.
Формат данных, которые пишутся в выходной поток.
Если nFormat == DefinitionFormat::DEFINED_AS_BINARY
, то:
- для внутрипроцессной реализации балансировщика нагрузки
- в поток pOs пишется значение
LoadBalancerServerType::LoadBalancerIsInprocessServer
, (4б), затем машинное слово с указателем на текущую реализацию ILoadBalancer; - для реализации TCP-сервером
- в поток pOs пишется значение
LoadBalancerServerType::LoadBalancerIsTCPServer
(4б), затем 38-байтовый идентификатор балансировщика, затем длина адреса TCP-сервера, реализующего балансировщик, в байтах (4б), затем строковое выражение адреса сервера (UTF-8), далее порт (2б), далее размер UTF-8 строки с идентификатором экземпляра подсистемы предметной области, для которой существует текущая реализация ILoadBalancer, 4б, и далее этот идентификатор экземпляра подсистемы предметной области. Идентификатор балансировщика задается сервером CLoadBalancerProviderTCPClient.
Функция не увеличивает счетчик ссылок на экземпляр балансировщика нагрузки - это должен делать вызывающий при успешном завершении функции.