InvokeDomainInterface
Перейти к навигации
Перейти к поиску
template <class Callable, class ... Args>
auto InvokeDomainInterface(Callable&& fn, Args&& ... args) -> unique_drc;
Вызывает интерфейсный метод, возвращающий код domain_response_code_t, с указанным набором аргументов и, если интерфейсный метод возвращает код ошибочного завершения, генерирует исключение drc_exception.
- Параметры шаблона
Callable Тип Callable-объекта, который вызывается функцией. Прототип объекта должен позволять однозначно выполнить вызов объекта с аргументами std::forward<Args>(args)...
.Args... Тип входных аргументов, над которыми вызывается Callable-объект fn. - Параметры
fn Функциональный объект типа Callable, который вызывается над аргументами args.... ...args Набор входных аргументов, над которыми вызывается Callable-объект fn. - Возвращаемое значение:
- Объект unique_drc, содержащий в себе код domain_response_code_t, возвращенный функтором fn.
- Возможные исключения
drc_exception Реализует исключение C++, соответствующее коду ошибок domain_response_code_t. - См. также
InvokeDomainInterfaceGetter Вызывает указанный Callable объект, возвращающий domain_response_code_t, и, если объект возвращает код успешного завершения, возвращает указанный индексом выходной параметр через return
- иначе генерирует исключение типа drc_exception.InvokeDomainInterfaceSetter Вызывает интерфейсный метод, возвращающий код domain_response_code_t, с указанным набором аргументов и, если интерфейсный метод возвращает код ошибочного завершения, генерирует исключение drc_exception. InvokeInterface Вызывает интерфейсный метод, возвращающий код return_code_t, с указанным набором аргументов и, если интерфейсный метод возвращает код ошибочного завершения, генерирует исключение Chusov::Exceptions::ChsvCodeException. unique_drc Класс, реализующий эксклюзивное владение блоком данных domain_response_code_t и предоставляющий доступ к полям этой структуры.
Пример
void StartProcess(_In_bytecount_(cbParams) const void* pParams, size_type cbParams)
{
InvokeDomainInterface(&INode::StartProcess, m_pNode, pParams, cbParams);
}