asio_handler_invoke
(더 이상 사용되지 않음: associated_executor 특성을 사용한다.) 핸들러의 기본 호출(invoke) 함수이다.
[1 / 2 오버로드] const형이 아닌 함수 개체에 사용되는 기본 핸들러 호출 훅(hook)이다.
template<
typename Function>
asio_handler_invoke_is_deprecated asio_handler_invoke(
Function & function,
... );
[2 / 2 오버로드] const형 함수 개체에 사용되는 기본 핸들러 호출 훅(hook)이다.
template<
typename Function>
asio_handler_invoke_is_deprecated asio_handler_invoke(
const Function & function,
... );
비동기 작업에 대한 완료 핸들러는 해당 개체(예: socket 또는 deadline_timer)와 연결된 io_context에 의해 호출(invoke)된다. 확실한 보장은 핸들러가 호출될 수 있는 경우 이루어진다. 이는 해당 io_context 개체에서 현재 run()을 호출한 스레드에서만 핸들러를 호출할 수 있기 때문이다. 이후 핸들러는 추가적인 보장을 제공하는 다른 개체(예: io_context::strand 개체)를 통해 호출(invoke)될 수 있다.
비동기 작업이 다른 비동기 작업에 의해 구성되는 경우, 모든 중간 핸들러는 최종 핸들러와 동일한 방법을 사용하여 호출(invoke)되어야 한다. 이는 사용자-정의 개체가 보장을 위반할 수 있는 방식으로 접근되지 않도록 하기 위해 필요하다. 이 훅킹(hooking) 함수는 각 중간 단계에서 최종 핸들러에 사용된 호출(invoke) 방법에 접근할 수 있도록 보장한다.
사용자 정의 호출(invoke) 전략을 지정하기 위해 자체 핸들러에 asio_handler_invoke를 구현한다.
이 기본 구현은 다음과 같은 함수 개체를 호출한다:
function();
필요한 경우 기본 구현에 함수 개체의 복사본을 만들어서 const형이 아닌 operator()를 사용할 수 있다.
예제
class my_handler;
template <typename Function>
void asio_handler_invoke(Function function, my_handler* context)
{
context->strand_.dispatch(function);
}
요구사항
일반 헤더: boost/asio/handler_invoke_hook.hpp
편의 헤더: boost/asio.hpp
Boost.Asio 홈
'Boost C++ Libraries > Boost.Asio' 카테고리의 다른 글
Boost.Asio 색인 - ssl::context::file_format (0) | 2021.01.05 |
---|---|
Boost.Asio 색인 - asio_handler_is_continuation (0) | 2021.01.05 |
Boost.Asio 색인 - asio_handler_deallocate (0) | 2021.01.05 |
Boost.Asio 색인 - asio_handler_allocate (0) | 2021.01.05 |
Boost.Asio 색인 - executor_binder::argument_type (0) | 2021.01.05 |