domain_response_code_t

Материал из CAMaaS preliminary wiki
Перейти к навигации Перейти к поиску
Компоненты на верхнем уровне \ Подсистема управления \ domain_response_code_t
typedef std::uintptr_t domain_response_code_t;

Тип кода ответа подсистемы предметной области подсистеме управления.

Формат ответа определяется значением кода ошибки, определенным параметром nReturnCode функции IControlSystemDomainSide::FormResponse. Фактически значением кода ответа является приведенный к целому указатель на буфер в памяти, задающий поля описания кода ответа.

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

Если же значение кода ошиибки не равно нулю, и/или функцией IControlSystemDomainSide::FormResponse задано текстовое описание для возвращенного кода, то образуемый функцией FormatResponse ответ является указателем на приведенную в таблице структуру данных, передаваемую подсистеме управления.

Поле Размер блока Код ошибки Размер текстового описания Текстовое описание
Размер, байт 4 4 4 Пред. поле.
  • Размер блока задает размер всей структуры данных в целом.
  • Код ошибки - установленный по правилам chsvlib код ошибки, задаваемый параметром nReturnCode функции IControlSystemDomainSide::FormResponse. Если пространство ошибки задано идентификатором CHSV_FACILITY_GENERAL код будет анализироваться подсистемой управления.
  • Размер текстового описания - размер четвертого поля в байтах. Равен нулю, если текстового описания нет.
  • Опциональное текстовое описание ошибки.

Код domain_response_code_t (в том числе нулевой), возвращенный функцией IControlSystemDomainSide::FormResponse, использует память кучи процесса, которая может быть освобождена с помощью функции InprocessControlFreeResponseCode из domain_shared. При однопроцессной реализации, а также в случае распределенной реализации через прокси из domain_shared, когда код передается предметно-независимой подсистеме, которой принадлежит domain_shared, владение ресурсом также передается, поэтому специальный вызов InprocessControlFreeResponseCode не требуется.

По релизации

При синхронном удаленном вызове выходные данные следуют за указанной структурой, которая передается ответом подсистемы предметной области всегда.