ILoadBalancer::Marshal: различия между версиями

Материал из CAMaaS preliminary wiki
Перейти к навигации Перейти к поиску
 
(не показана 1 промежуточная версия этого же участника)
Строка 6: Строка 6:
{{function_paramlist add|cchDomainName|Длина строки <tt>pDomainName</tt> в байтах.}}
{{function_paramlist add|cchDomainName|Длина строки <tt>pDomainName</tt> в байтах.}}
{{function_paramlist add|nFormat|Задает формат, по которому осуществляется в поток. Формат задается одной из констант перечисления [[DefinitionFormat]]: {{DefinitionFormat}}}}
{{function_paramlist add|nFormat|Задает формат, по которому осуществляется в поток. Формат задается одной из констант перечисления [[DefinitionFormat]]: {{DefinitionFormat}}}}
{{function_paramlist add|pOs|Поток для записи ссылки на балансировщий.|paramdir=[in]}}
{{function_paramlist add|pOs|Поток для записи ссылки на балансировщик.|paramdir=[in]}}
{{function_paramlist end}}
{{function_paramlist end}}
{{function_return_value|32-битовый беззнаковый целый код ошибки, который в случае успешного выполнения неотрицателен.}}
{{function_return_value|32-битовый целый код ошибки, который в случае успешного выполнения неотрицателен.}}
{{function sa begin}}
{{function sa begin}}
{{function sa add|[[DemarshalLoadBalancer]]|{{DemarshalLoadBalancer brief}}}}
{{function sa add|[[DemarshalLoadBalancer]]|{{DemarshalLoadBalancer brief}}}}
Строка 22: Строка 22:
:в поток <tt>pOs</tt> пишется значение <source lang="cpp" inline>LoadBalancerServerType::LoadBalancerIsTCPServer</source> (4б), затем 38-байтовый идентификатор балансировщика, затем длина адреса TCP-сервера, реализующего балансировщик, в байтах (4б), затем строковое выражение адреса сервера (UTF-8), далее порт (2б), далее размер UTF-8 строки с идентификатором экземпляра подсистемы предметной области, для которой существует текущая реализация [[ILoadBalancer]], 4б, и далее этот идентификатор экземпляра подсистемы предметной области. Идентификатор балансировщика задается сервером [[CLoadBalancerProviderTCPClient]].
:в поток <tt>pOs</tt> пишется значение <source lang="cpp" inline>LoadBalancerServerType::LoadBalancerIsTCPServer</source> (4б), затем 38-байтовый идентификатор балансировщика, затем длина адреса TCP-сервера, реализующего балансировщик, в байтах (4б), затем строковое выражение адреса сервера (UTF-8), далее порт (2б), далее размер UTF-8 строки с идентификатором экземпляра подсистемы предметной области, для которой существует текущая реализация [[ILoadBalancer]], 4б, и далее этот идентификатор экземпляра подсистемы предметной области. Идентификатор балансировщика задается сервером [[CLoadBalancerProviderTCPClient]].


''Функция не дает увеличивает счетчик ссылок на экземпляр балансировщика нагрузки - это должен делать вызывающий при успешном завершении функции.''
''Функция не увеличивает счетчик ссылок на экземпляр балансировщика нагрузки - это должен делать вызывающий при успешном завершении функции.''

Текущая версия на 15:13, 19 декабря 2017

Компоненты на верхнем уровне \ Подсистема управления \ 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_BINARY1Данные запакованы в двоичном виде. См. package.
DEFINED_AS_XML2Данные запакованы в 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.

Функция не увеличивает счетчик ссылок на экземпляр балансировщика нагрузки - это должен делать вызывающий при успешном завершении функции.