| 170 | } |
| 171 | |
| 172 | AsioTransport AsioAcceptor::accept(std::chrono::milliseconds timeout) { |
| 173 | asio::ip::tcp::socket sock{io_context_}; |
| 174 | |
| 175 | bool done = false; |
| 176 | asio::error_code op_ec; |
| 177 | acceptor_.async_accept(sock, [&op_ec, &done](const asio::error_code& e) { |
| 178 | op_ec = e; |
| 179 | done = true; |
| 180 | }); |
| 181 | if (run_until(io_context_, acceptor_, done, timeout) || op_ec) { |
| 182 | throw_socket_timeout_error("accept"); |
| 183 | } |
| 184 | |
| 185 | return AsioTransport{io_context_, std::move(sock), timeout}; |
| 186 | } |
| 187 | |
| 188 | } // namespace oid |