ILoadBalancer::Marshal
Версия от 01:26, 18 декабря 2017; Андрей Чусов (обсуждение | вклад) (Новая страница: «{{NavBar|{{Системная иерархия:ILoadBalancer}} \ Marshal}} {{function_begin | return_code_t PLATFORM_NATIVE_CALLING_CONVENTION Marshal( const…»)
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.
Функция никогда не завладевает объектом pNode. При успешном завершении функции вызывающий должен самостоятельно увеличить счетчик ссылок на объект pNode.