MarshalNode: различия между версиями
Перейти к навигации
Перейти к поиску
Строка 17: | Строка 17: | ||
{{function sa end}} | {{function sa end}} | ||
{{function_end}} | {{function_end}} | ||
'''Формат данных, которые пишутся в выходной поток.''' | |||
Если <source lang="cpp" inline>nFormat == DefinitionFormat::DEFINED_AS_BINARY</source>, то: | |||
;для внутрипроцессной реализации узла | |||
:в поток <tt>pOs</tt> пишется значение <source lang="cpp" inline>NodeServerType::NodeIsInprocessServer</source>, (4б), затем машинное слово с указателем на реализацию [[INode]], равным <tt>pNode</tt>; | |||
;для реализации узла TCP-сервером | |||
:в поток <tt>pOs</tt> пишется значение <source lang="cpp" inline>NodeServerType::NodeIsTCPServer</source> (4б), затем длина адреса TCP-сервера, реализующего узел, (4б), затем строковое выражение адреса сервера (UTF-8) и далее порт (2б). | |||
''Функция никогда не завладевает объектом <tt>pNode</tt>. При успешном завершении функции вызывающий должен самостоятельно увеличить счетчик ссылок на объект <tt>pNode</tt>.'' |
Текущая версия на 23:57, 17 декабря 2017
return_code_t PLATFORM_NATIVE_CALLING_CONVENTION MarshalNode(
const INode* pNode,
const char* pDomainName,
size_type cchDomainName,
std::uint32_t nFormat,
IOutputStream* pOs) noexcept;
Осуществляет запись в выходной поток ссылки на внутрипроцессный или удаленный вычислительный узел INode.
- Параметры
[in] pNode C-указатель на реализацию интерфейса INode, которую необходимо адресовать данными, записываемыми в поток pOs. [in] pDomainName Строковой идентификатор экземпляра подсистемы предметной области, для которого осуществляется запись в поток. Строку не нужно завершать терминальным нулем. cchDomainName Длина строки pDomainName в байтах. nFormat Задает формат, по которому осуществляется в поток. Формат задается одной из констант перечисления DefinitionFormat: Символическое имя Целочисленное значение Описание DEFINED_AS_BINARY 1 Данные запакованы в двоичном виде. См. package. DEFINED_AS_XML 2 Данные запакованы в XML виде. Не поддерживается. [in] pOs Поток для записи данных об узле. - Возвращаемое значение:
- 32-битовый целый код ошибки, который неотрицателен при успешности операции.
- См. также
DemarshalNode Осуществляет демаршаллинг адреса вычислительного узла INode из потока чтения и создает прокси-объект, реализующий интерфейс INode и при необходимости делегирующий вызов серверу узла по прочитанному адресу.
Формат данных, которые пишутся в выходной поток.
Если nFormat == DefinitionFormat::DEFINED_AS_BINARY
, то:
- для внутрипроцессной реализации узла
- в поток pOs пишется значение
NodeServerType::NodeIsInprocessServer
, (4б), затем машинное слово с указателем на реализацию INode, равным pNode; - для реализации узла TCP-сервером
- в поток pOs пишется значение
NodeServerType::NodeIsTCPServer
(4б), затем длина адреса TCP-сервера, реализующего узел, (4б), затем строковое выражение адреса сервера (UTF-8) и далее порт (2б).
Функция никогда не завладевает объектом pNode. При успешном завершении функции вызывающий должен самостоятельно увеличить счетчик ссылок на объект pNode.