Boost C++ Libraries/Boost.Asio

Boost.Asio "C++ Extensions for Networking" TS 호환성

까마귀75 2020. 12. 20. 16:56
728x90
반응형

"C++ Extensions for Networking" TS 호환성 (Networking TS compatibility)

Boost.Asio는 이제 "C++ Extensions for Networking" 기술 사양에 지정된 인터페이스와 기능을 제공한다. 일반적인 Boost.Asio 헤더 파일을 통한 접근 외에도, 이 기능은 TS에 정의된 헤더 파일에 해당하는 특수 헤더를 통해 접근할 수 있다. 아래 표에 나열되어 있다:

Networking TS 헤더 파일 Boost.Asio 헤더 파일
#incldue <buffer> #include <boost/asio/ts/buffer.hpp>
#include <executor> #include <boost/asio/ts/executor.hpp>
#include <internet> #include <boost/asio/ts/internet.hpp>
#include <io_context> #include <boost/asio/ts/io_context.hpp>
#include <net> #include <boost/asio/ts/net.hpp>
#include <netfwd> #include <boost/asio/ts/netfwd.hpp>
#include <socket> #include <boost/asio/ts/socket.hpp>
#include <timer> #include <boost/asio/ts/timer.hpp>


경우에 따라 새로운 Networking TS 호환 인터페이스가 이전 Boost.Asio 기능을 대체한다. 이러한 경우 이전 인터페이스는 더 이상 사용되지 않는다. 아래 표는 새로운 Networking TS 인터페이스와 이 인터페이스가 대체하는 기능을 보여준다:

새로운 인터페이스 이전 인터페이스 참고
io_context io_service io_service 이름은 typedef로 유지된다.
dispatch io_service::dispatch 사용가능한 dispatch 함수는 ExecutorExecutionContext에 함수를 종속시키는 데 사용될 수 있다.
post io_service::post 사용가능한 post 함수는 ExecutorExecutionContext에 함수를 종속시키는 데 사용될 수 있다.
defer asio_handler_is_continuation 후크가 true를 반환할 경우의 io_service::post 사용가능한 post 함수는 ExecutorExecutionContext에 함수를 종속시키는 데 사용될 수 있다.
io_context::poll error_code& 를 가지는 io_service::poll의 오버로드 error_code 오버로드는 필요하지 않다.
io_context::poll_one error_code& 를 가지는 io_service::poll_one의 오버로드 error_code 오버로드는 필요하지 않다.
io_context::run error_code& 를 가지는 io_service::run의 오버로드 error_code 오버로드는 필요하지 않다.
io_context::run_one error_code& 를 가지는 io_service::run_one의 오버로드 error_code 오버로드는 필요하지 않다.
io_context::run_for,
io_context::run_until,
io_context::run_one_for,
io_context::run_one_until
  이러한 함수는 제한된 시간 동안 io_context를 실행할 수 있는 기능을 추가한다.
io_context::restart io_service::reset  
concurrency_hint 파라미터가 int 유형인 io_context 생성자 concurrency_hint 파라미터가 std::size_t 유형인 io_context 생성자 이전 생성자는 더 이상 사용되지 않는 오버로드로 유지되지 않는다.
execution_context,
execution_context::service,
execution_context::id
io_service,
io_service::service,
io_service::id
서비스 관련 기능이 execution_context 기본 클래스로 이동되었다. 이것은 또한 사용자 정의 실행 컨텍스트를 만들기위한 기반으로 사용될 수 있다.
make_service add_service  
strand io_service::strand 이 템플릿은 유효한 실행기(executor)와 함께 작동하며, 그 자체가 유효한 실행기(executor)이다.
executor_work_guard,
make_work_guard

 

io_service::work 작업 추적은 이제 Executor 요구 사항에 포함된다. 이러한 템플릿은 유효한 실행기(executor)와 함께 작동한다.
executor_binder,
bind_executor
io_service::wrap,
io_service::strand::wrap
이러한 템플릿은 유효한 실행기(executor)와 함께 작동한다.
CompletionToken와 서명된 템플릿 파라미터가 있는 async_result handler_type와 단일 파라미터 async_result async_result 특성은 이제 비동기 작업 완료 핸들러와 반환 유형에 대한 사용자 정의 단일 지점이다.
associated_executor,
get_associated_executor
asio_handler_invoke 핸들러 호출 후크는 새로운 실행기(Executor) 요구 사항과 관련된 실행기(executor) 특성으로 대체되었다.
associated_allocator,
get_associated_allocator
asio_handler_allocate,
asio_handler_deallocate
핸들러 할당 후크는 표준 할당자 요구 사항과 관련된 할당자 특성으로 대체되었다.
const_buffer::data,
mutable_buffer::data
buffer_cast  
const_buffer::size,
mutable_buffer::size
단일 버퍼의 경우 buffer_size const_buffer와 mutable_buffer가 버퍼 시퀀스 요구 사항을 이제 충족하므로, buffer_size는 단일 버퍼에 대해 사용된다.
const_buffer const_buffers_1 ConstBufferSequence 요구 사항은 const_buffer가 이제 ConstBufferSequence 요구 사항을 충족하도록 수정되었다.
mutable_buffer mutable_buffers_1 MutableBufferSequence 요구 사항은 mutable_buffer가 이제 MutableBufferSequence 요구 사항을 충족하도록 수정되었다.
basic_socket::get_executor (및 타이머, 직렬 포트 등과 같은 I/O 객체에 대한 해당 멤버) basic_io_object::get_io_service get_executor().context()를 사용하여 연관된 io_context를 얻는다.
socket_base::max_listen_connections socket_base::max_connections  
socket_base::wait_type,
basic_socket::wait,
basic_socket::async_wait,
basic_socket_acceptor::wait,
basic_socket_acceptor::async_wait
null_buffers 반응형 I/O 작업
소켓을 반환하는 basic_socket_acceptor::accept 참조로 소켓을 가지는 basic_socket_acceptor::accept 이동 지원을 사용하므로 C++11 이상이 필요하다. 다른 io_context 소켓 개체에 대한 연결을 승인하려면, 대상 컨텍스트를 accept에 전달한다.
소켓을 핸들러로 전달하는 basic_socket_acceptor::async_accept 참조로 소켓을 가지는 basic_socket_acceptor::async_accept 이동 지원을 사용하므로 C++11 이상이 필요하다. 다른 io_context 소켓 개체에 대한 연결을 승인하려면, 대상 컨텍스트를 async_accept에 전달한다.
범위(range)를 가지는 connect 오버로드 단일 반복기(iterator)를 가지는 connect 오버로드 ip::basic_resolver::resolve 함수는 이제 범위(range)를 반환한다. resolve 함수의 결과가 직접 connect에 전달되면 범위(range) 오버로드가 선택된다.
범위(range)를 가지는 async_connect 오버로드 단일 반복기(iterator)를 가지는 async_connect 오버로드 ip::basic_resolver::resolve 함수는 이제 범위(range)를 반환한다. resolve 함수의 결과가 직접 async_connect에 전달되면 범위(range) 오버로드가 선택된다.
basic_socket_streambuf::duration basic_socket_streambuf::duration_type  
basic_socket_streambuf::time_point basic_socket_streambuf::time_type  
basic_socket_streambuf::expiry basic_socket_streambuf::expires_at,
basic_socket_streambuf::expires_from_now 게터(getters)
 
basic_socket_streambuf::expires_after basic_socket_streambuf::expires_from_now 세터(setter)  
basic_socket_streambuf::error basic_socket_streambuf::puberror  
basic_socket_iostream::duration basic_socket_iostream::duration_type  
basic_socket_iostream::time_point basic_socket_iostream::time_type  
basic_socket_iostream::expiry basic_socket_iostream::expires_at,
basic_socket_iostream::expires_from_now 게터(getters)
 
basic_socket_iostream::expires_after basic_socket_iostream::expires_from_now 세터(setter)  
basic_waitable_timer::cancel error_code&를 가지는 basic_waitable_timer::cancel의 오버로드 error_code의 오버로드는 필요하지 않다.
basic_waitable_timer::cancel_one error_code&를 가지는 basic_waitable_timer::cancel_one의 오버로드 error_code의 오버로드는 필요하지 않다.
basic_waitable_timer::expires_at 세터(setter) error_code&를 가지는 basic_waitable_timer::expires_at의 세터(setter) error_code의 오버로드는 필요하지 않다.
basic_waitable_timer::expiry basic_waitable_timer::expires_at,
basic_waitable_timer::expires_from_now 게터(getters)
 
basic_waitable_timer::expires_after basic_waitable_timer::expires_from_now 세터(setter)  
ip::make_address ip::address::from_string  
ip::make_address_v4 ip::address_v4::from_string,
ip::address_v6::to_v4
 
ip::make_address_v6 ip::address_v6::from_string,
ip::address_v6::v4_mapped
 
ip::address::to_string error_code&를 가지는 ip::address::to_string error_code의 오버로드는 필요하지 않다.
ip::address_v4::to_string error_code&를 가지는 ip::address_v4::to_string error_code의 오버로드는 필요하지 않다.
ip::address_v6::to_string error_code&를 가지는 ip::address_v6::to_string error_code의 오버로드는 필요하지 않다.
대체 없음 ip::address_v6::is_v4_compatible,
ip::address_v6::v4_compatible
 
ip::network_v4 ip::address_v4::broadcast,
ip::address_v4::is_class_a,
ip::address_v4::is_class_b,
ip::address_v4::is_class_c,
ip::address_v4::netmask
network_v4 클래스는 CIDR 표기법을 사용하여 IPv4 네트워크 주소를 조작하는 기능을 추가한다.
ip::network_v6   network_v6 클래스는 CIDR 표기법을 사용하여 IPv6 네트워크 주소를 조작하는 기능을 추가한다.
ip::address_v4_iterator,
ip::address_v4_range
  ip::address_v4_iterator와 address_v4_range 클래스는 IPv4 주소 전체 또는 일부(subset)를 반복(iterate)하는 가능을 추가한다.
ip::address_v6_iterator,
ip::address_v6_range
  ip::address_v6_iterator와 address_v6_range 클래스는 IPv6 주소 전체 또는 일부(subset)를 반복(iterate)하는 가능을 추가한다.
ip::basic_resolver::results_type ip::basic_resolver::iterator 리졸버(resolver)는 단일 반복기(iterator)가 아니라 범위(range)를 생성한다.
호스트 이름과 서비스를 인수로 가지는 ip::basic_resolver::resolve의 오버로드 ip::basic_resolver::query를 가지는 ip::basic_resolver::resolve 오버로드  
범위(range)를 반환하는 ip::basic_resolver::resolve 단일 반복기(iterator)를 반환하는 ip::basic_resolver::resolve  
호스트 이름과 서비스를 인수로 가지는 ip::basic_resolver::async_resolve 오버로드 ip::basic_resolver::query를 가지는 ip::basic_resolver::async_resolve 오버로드  
범위(range)와 함께 핸들러를 호출하는 ip::basic_resolver::async_resolve 단일 반복기(iterator)와 함께 핸들러를 호출하는 ip::basic_resolver::async_resolve  


원본 링크

728x90
반응형