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

Материал из CAMaaS preliminary wiki
Перейти к навигации Перейти к поиску
(Новая страница: «{{NavBar|{{Системная иерархия:IControlSystemDomainSide}} \ Marshal}} {{function_begin |return_code_t PLATFORM_NATIVE_CALLING_CONVENTION Marshal(…»)
 
 
Строка 22: Строка 22:
:в поток <tt>pOs</tt> пишется значение <source lang="cpp" inline>ControlSystemServerType::ControlSystemIsTCPServer</source> (4б), затем длина адреса TCP-сервера, реализующего подсистему управления, в байтах, (4б), затем строковое выражение адреса сервера (UTF-8) и далее TCP порт (2б).
:в поток <tt>pOs</tt> пишется значение <source lang="cpp" inline>ControlSystemServerType::ControlSystemIsTCPServer</source> (4б), затем длина адреса TCP-сервера, реализующего подсистему управления, в байтах, (4б), затем строковое выражение адреса сервера (UTF-8) и далее TCP порт (2б).


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

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

Компоненты на верхнем уровне \ Подсистема управления \ IControlSystemDomainSide \ 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, приведенной к 32-битовому целому:
Символическое имяЦелочисленное значениеОписание
DEFINED_AS_BINARY1Данные запакованы в двоичном виде. См. package.
DEFINED_AS_XML2Данные запакованы в XML виде. Не поддерживается.
[in]pOsПоток для записи ссылки на экземпляр подсистемы управления.
Возвращаемое значение:
32-битовый беззнаковый целый код ошибки, который в случае успешного выполнения неотрицателен.
См. также
DemarshalControlSystemПроизводит чтение ссылки на экземпляр подсистемы управления из потока чтения IInputStream.

Формат данных, которые пишутся в выходной поток.

Если nFormat == DefinitionFormat::DEFINED_AS_BINARY, то:

для внутрипроцессной реализации подсистемы управления
в поток pOs пишется значение ControlSystemServerType::ControlSystemIsInprocessServer, (4б), затем машинное слово с указателем на текущую реализацию IControlSystemDomainSide;
для реализации TCP-сервером
в поток pOs пишется значение ControlSystemServerType::ControlSystemIsTCPServer (4б), затем длина адреса TCP-сервера, реализующего подсистему управления, в байтах, (4б), затем строковое выражение адреса сервера (UTF-8) и далее TCP порт (2б).

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