| 2421 | }; |
| 2422 | |
| 2423 | class initiate_async_accept |
| 2424 | { |
| 2425 | public: |
| 2426 | typedef Executor executor_type; |
| 2427 | |
| 2428 | explicit initiate_async_accept(basic_socket_acceptor* self) |
| 2429 | : self_(self) |
| 2430 | { |
| 2431 | } |
| 2432 | |
| 2433 | executor_type get_executor() const ASIO_NOEXCEPT |
| 2434 | { |
| 2435 | return self_->get_executor(); |
| 2436 | } |
| 2437 | |
| 2438 | template <typename AcceptHandler, typename Protocol1, typename Executor1> |
| 2439 | void operator()(ASIO_MOVE_ARG(AcceptHandler) handler, |
| 2440 | basic_socket<Protocol1, Executor1>* peer, |
| 2441 | endpoint_type* peer_endpoint) const |
| 2442 | { |
| 2443 | // If you get an error on the following line it means that your handler |
| 2444 | // does not meet the documented type requirements for a AcceptHandler. |
| 2445 | ASIO_ACCEPT_HANDLER_CHECK(AcceptHandler, handler) type_check; |
| 2446 | |
| 2447 | detail::non_const_lvalue<AcceptHandler> handler2(handler); |
| 2448 | self_->impl_.get_service().async_accept( |
| 2449 | self_->impl_.get_implementation(), *peer, peer_endpoint, |
| 2450 | handler2.value, self_->impl_.get_executor()); |
| 2451 | } |
| 2452 | |
| 2453 | private: |
| 2454 | basic_socket_acceptor* self_; |
| 2455 | }; |
| 2456 | |
| 2457 | class initiate_async_move_accept |
| 2458 | { |