InvokeDomainInterface

Материал из CAMaaS preliminary wiki
Перейти к навигации Перейти к поиску
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);
}