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 не требуется.
По релизации
При синхронном удаленном вызове выходные данные следуют за указанной структурой, которая передается ответом подсистемы предметной области всегда.