MarshalNode: различия между версиями
Перейти к навигации
Перейти к поиску
Ninok2801 (обсуждение | вклад) (Создана пустая страница) |
|||
(не показаны 3 промежуточные версии этого же участника) | |||
Строка 1: | Строка 1: | ||
{{function_begin |return_code_t PLATFORM_NATIVE_CALLING_CONVENTION MarshalNode( | |||
const INode* pNode, | |||
const char* pDomainName, | |||
size_type cchDomainName, | |||
std::uint32_t nFormat, | |||
IOutputStream* pOs) noexcept; |{{MarshalNode brief}}}} | |||
{{function_paramlist begin}} | |||
{{function_paramlist add|pNode|C-указатель на реализацию интерфейса [[INode]], которую необходимо адресовать данными, записываемыми в поток <tt>pOs</tt>.|paramdir=[in]}} | |||
{{function_paramlist add|pDomainName|Строковой идентификатор экземпляра подсистемы предметной области, для которого осуществляется запись в поток. Строку не нужно завершать терминальным нулем.|paramdir=[in]}} | |||
{{function_paramlist add|cchDomainName|Длина строки <tt>pDomainName</tt> в байтах.}} | |||
{{function_paramlist add|nFormat|Задает формат, по которому осуществляется в поток. Формат задается одной из констант перечисления [[DefinitionFormat]]: {{DefinitionFormat}}}} | |||
{{function_paramlist add|pOs|Поток для записи данных об узле.|paramdir=[in]}} | |||
{{function_paramlist end}} | |||
{{function_return_value|32-битовый целый код ошибки, который неотрицателен при успешности операции.}} | |||
{{function sa begin}} | |||
{{function sa add|[[DemarshalNode]]|{{DemarshalNode brief}}}} | |||
{{function sa 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.