⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 basic_socket_acceptor.hpp

📁 这是国外的resip协议栈
💻 HPP
📖 第 1 页 / 共 2 页
字号:
   * operations to finish immediately, and the handlers for cancelled operations   * will be passed the asio::error::operation_aborted error.   *   * @throws asio::system_error Thrown on failure.   */  void cancel()  {    asio::error_code ec;    this->service.cancel(this->implementation, ec);    asio::detail::throw_error(ec);  }  /// Cancel all asynchronous operations associated with the acceptor.  /**   * This function causes all outstanding asynchronous connect, send and receive   * operations to finish immediately, and the handlers for cancelled operations   * will be passed the asio::error::operation_aborted error.   *   * @param ec Set to indicate what error occurred, if any.   */  asio::error_code cancel(asio::error_code& ec)  {    return this->service.cancel(this->implementation, ec);  }  /// Set an option on the acceptor.  /**   * This function is used to set an option on the acceptor.   *   * @param option The new option value to be set on the acceptor.   *   * @throws asio::system_error Thrown on failure.   *   * @sa SettableSocketOption @n   * asio::socket_base::reuse_address   * asio::socket_base::enable_connection_aborted   *   * @par Example   * Setting the SOL_SOCKET/SO_REUSEADDR option:   * @code   * asio::ip::tcp::acceptor acceptor(io_service);   * ...   * asio::ip::tcp::acceptor::reuse_address option(true);   * acceptor.set_option(option);   * @endcode   */  template <typename SettableSocketOption>  void set_option(const SettableSocketOption& option)  {    asio::error_code ec;    this->service.set_option(this->implementation, option, ec);    asio::detail::throw_error(ec);  }  /// Set an option on the acceptor.  /**   * This function is used to set an option on the acceptor.   *   * @param option The new option value to be set on the acceptor.   *   * @param ec Set to indicate what error occurred, if any.   *   * @sa SettableSocketOption @n   * asio::socket_base::reuse_address   * asio::socket_base::enable_connection_aborted   *   * @par Example   * Setting the SOL_SOCKET/SO_REUSEADDR option:   * @code   * asio::ip::tcp::acceptor acceptor(io_service);   * ...   * asio::ip::tcp::acceptor::reuse_address option(true);   * asio::error_code ec;   * acceptor.set_option(option, ec);   * if (ec)   * {   *   // An error occurred.   * }   * @endcode   */  template <typename SettableSocketOption>  asio::error_code set_option(const SettableSocketOption& option,      asio::error_code& ec)  {    return this->service.set_option(this->implementation, option, ec);  }  /// Get an option from the acceptor.  /**   * This function is used to get the current value of an option on the   * acceptor.   *   * @param option The option value to be obtained from the acceptor.   *   * @throws asio::system_error Thrown on failure.   *   * @sa GettableSocketOption @n   * asio::socket_base::reuse_address   *   * @par Example   * Getting the value of the SOL_SOCKET/SO_REUSEADDR option:   * @code   * asio::ip::tcp::acceptor acceptor(io_service);   * ...   * asio::ip::tcp::acceptor::reuse_address option;   * acceptor.get_option(option);   * bool is_set = option.get();   * @endcode   */  template <typename GettableSocketOption>  void get_option(GettableSocketOption& option)  {    asio::error_code ec;    this->service.get_option(this->implementation, option, ec);    asio::detail::throw_error(ec);  }  /// Get an option from the acceptor.  /**   * This function is used to get the current value of an option on the   * acceptor.   *   * @param option The option value to be obtained from the acceptor.   *   * @param ec Set to indicate what error occurred, if any.   *   * @sa GettableSocketOption @n   * asio::socket_base::reuse_address   *   * @par Example   * Getting the value of the SOL_SOCKET/SO_REUSEADDR option:   * @code   * asio::ip::tcp::acceptor acceptor(io_service);   * ...   * asio::ip::tcp::acceptor::reuse_address option;   * asio::error_code ec;   * acceptor.get_option(option, ec);   * if (ec)   * {   *   // An error occurred.   * }   * bool is_set = option.get();   * @endcode   */  template <typename GettableSocketOption>  asio::error_code get_option(GettableSocketOption& option,      asio::error_code& ec)  {    return this->service.get_option(this->implementation, option, ec);  }  /// Get the local endpoint of the acceptor.  /**   * This function is used to obtain the locally bound endpoint of the acceptor.   *   * @returns An object that represents the local endpoint of the acceptor.   *   * @throws asio::system_error Thrown on failure.   *   * @par Example   * @code   * asio::ip::tcp::acceptor acceptor(io_service);   * ...   * asio::ip::tcp::endpoint endpoint = acceptor.local_endpoint();   * @endcode   */  endpoint_type local_endpoint() const  {    asio::error_code ec;    endpoint_type ep = this->service.local_endpoint(this->implementation, ec);    asio::detail::throw_error(ec);    return ep;  }  /// Get the local endpoint of the acceptor.  /**   * This function is used to obtain the locally bound endpoint of the acceptor.   *   * @param ec Set to indicate what error occurred, if any.   *   * @returns An object that represents the local endpoint of the acceptor.   * Returns a default-constructed endpoint object if an error occurred and the   * error handler did not throw an exception.   *   * @par Example   * @code   * asio::ip::tcp::acceptor acceptor(io_service);   * ...   * asio::error_code ec;   * asio::ip::tcp::endpoint endpoint = acceptor.local_endpoint(ec);   * if (ec)   * {   *   // An error occurred.   * }   * @endcode   */  endpoint_type local_endpoint(asio::error_code& ec) const  {    return this->service.local_endpoint(this->implementation, ec);  }  /// Accept a new connection.  /**   * This function is used to accept a new connection from a peer into the   * given socket. The function call will block until a new connection has been   * accepted successfully or an error occurs.   *   * @param peer The socket into which the new connection will be accepted.   *   * @throws asio::system_error Thrown on failure.   *   * @par Example   * @code   * asio::ip::tcp::acceptor acceptor(io_service);   * ...   * asio::ip::tcp::socket socket(io_service);   * acceptor.accept(socket);   * @endcode   */  template <typename SocketService>  void accept(basic_socket<protocol_type, SocketService>& peer)  {    asio::error_code ec;    this->service.accept(this->implementation, peer, 0, ec);    asio::detail::throw_error(ec);  }  /// Accept a new connection.  /**   * This function is used to accept a new connection from a peer into the   * given socket. The function call will block until a new connection has been   * accepted successfully or an error occurs.   *   * @param peer The socket into which the new connection will be accepted.   *   * @param ec Set to indicate what error occurred, if any.   *   * @par Example   * @code   * asio::ip::tcp::acceptor acceptor(io_service);   * ...   * asio::ip::tcp::soocket socket(io_service);   * asio::error_code ec;   * acceptor.accept(socket, ec);   * if (ec)   * {   *   // An error occurred.   * }   * @endcode   */  template <typename SocketService>  asio::error_code accept(      basic_socket<protocol_type, SocketService>& peer,      asio::error_code& ec)  {    return this->service.accept(this->implementation, peer, 0, ec);  }  /// Start an asynchronous accept.  /**   * This function is used to asynchronously accept a new connection into a   * socket. The function call always returns immediately.   *   * @param peer The socket into which the new connection will be accepted.   * Ownership of the peer object is retained by the caller, which must   * guarantee that it is valid until the handler is called.   *   * @param handler The handler to be called when the accept operation   * completes. Copies will be made of the handler as required. The function   * signature of the handler must be:   * @code void handler(   *   const asio::error_code& error // Result of operation.   * ); @endcode   * Regardless of whether the asynchronous operation completes immediately or   * not, the handler will not be invoked from within this function. Invocation   * of the handler will be performed in a manner equivalent to using   * asio::io_service::post().   *   * @par Example   * @code   * void accept_handler(const asio::error_code& error)   * {   *   if (!error)   *   {   *     // Accept succeeded.   *   }   * }   *   * ...   *   * asio::ip::tcp::acceptor acceptor(io_service);   * ...   * asio::ip::tcp::socket socket(io_service);   * acceptor.async_accept(socket, accept_handler);   * @endcode   */  template <typename SocketService, typename AcceptHandler>  void async_accept(basic_socket<protocol_type, SocketService>& peer,      AcceptHandler handler)  {    this->service.async_accept(this->implementation, peer, 0, handler);  }  /// Accept a new connection and obtain the endpoint of the peer  /**   * This function is used to accept a new connection from a peer into the   * given socket, and additionally provide the endpoint of the remote peer.   * The function call will block until a new connection has been accepted   * successfully or an error occurs.   *   * @param peer The socket into which the new connection will be accepted.   *   * @param peer_endpoint An endpoint object which will receive the endpoint of   * the remote peer.   *   * @throws asio::system_error Thrown on failure.   *   * @par Example   * @code   * asio::ip::tcp::acceptor acceptor(io_service);   * ...   * asio::ip::tcp::socket socket(io_service);   * asio::ip::tcp::endpoint endpoint;   * acceptor.accept(socket, endpoint);   * @endcode   */  template <typename SocketService>  void accept(basic_socket<protocol_type, SocketService>& peer,      endpoint_type& peer_endpoint)  {    asio::error_code ec;    this->service.accept(this->implementation, peer, &peer_endpoint, ec);    asio::detail::throw_error(ec);  }  /// Accept a new connection and obtain the endpoint of the peer  /**   * This function is used to accept a new connection from a peer into the   * given socket, and additionally provide the endpoint of the remote peer.   * The function call will block until a new connection has been accepted   * successfully or an error occurs.   *   * @param peer The socket into which the new connection will be accepted.   *   * @param peer_endpoint An endpoint object which will receive the endpoint of   * the remote peer.   *   * @param ec Set to indicate what error occurred, if any.   *   * @par Example   * @code   * asio::ip::tcp::acceptor acceptor(io_service);   * ...   * asio::ip::tcp::socket socket(io_service);   * asio::ip::tcp::endpoint endpoint;   * asio::error_code ec;   * acceptor.accept(socket, endpoint, ec);   * if (ec)   * {   *   // An error occurred.   * }   * @endcode   */  template <typename SocketService>  asio::error_code accept(      basic_socket<protocol_type, SocketService>& peer,      endpoint_type& peer_endpoint, asio::error_code& ec)  {    return this->service.accept(this->implementation, peer, &peer_endpoint, ec);  }  /// Start an asynchronous accept.  /**   * This function is used to asynchronously accept a new connection into a   * socket, and additionally obtain the endpoint of the remote peer. The   * function call always returns immediately.   *   * @param peer The socket into which the new connection will be accepted.   * Ownership of the peer object is retained by the caller, which must   * guarantee that it is valid until the handler is called.   *   * @param peer_endpoint An endpoint object into which the endpoint of the   * remote peer will be written. Ownership of the peer_endpoint object is   * retained by the caller, which must guarantee that it is valid until the   * handler is called.   *   * @param handler The handler to be called when the accept operation   * completes. Copies will be made of the handler as required. The function   * signature of the handler must be:   * @code void handler(   *   const asio::error_code& error // Result of operation.   * ); @endcode   * Regardless of whether the asynchronous operation completes immediately or   * not, the handler will not be invoked from within this function. Invocation   * of the handler will be performed in a manner equivalent to using   * asio::io_service::post().   */  template <typename SocketService, typename AcceptHandler>  void async_accept(basic_socket<protocol_type, SocketService>& peer,      endpoint_type& peer_endpoint, AcceptHandler handler)  {    this->service.async_accept(this->implementation,        peer, &peer_endpoint, handler);  }};} // namespace asio#include "asio/detail/pop_options.hpp"#endif // ASIO_BASIC_SOCKET_ACCEPTOR_HPP

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -