728x90
반응형
basic_streambuf_ref::mutable_buffers_type
출력 시퀀스를 버퍼 목록으로 나타내는 데 사용되는 유형이다.
typedef basic_streambuf< Allocator >::mutable_buffers_type mutable_buffers_type;
유 형
이 름 | 설 명 |
const_buffer_type | 입력 시퀀스를 버퍼 목록으로 나타내는 데 사용되는 유형이다. |
mutable_buffer_type | 출력 시퀀스를 버퍼 목록으로 나타내는 데 사용되는 유형이다. |
멤버 함수
이 름 | 설 명 |
basic_streambuf [constructor] |
basic_streambuf 개체를 생성하는 생성자(constructor). |
capacity | basic_streambuf의 현재 용량을 가져온다. |
commit | 출력 시퀀스에서 입력 시퀀스로 문자를 이동한다. |
consume | 입력 시퀀스에서 문자를 제거한다. |
data | 입력 시퀀스를 나타내는 버퍼 목록을 가져온다. |
max_size | basic_streambuf의 최대 크기를 가져온다. |
prepare | 주어진 크기로 출력 시퀀스를 나타내는 버퍼 목록을 가져온다. |
size | 입력 시퀀스의 크기를 가져온다. |
보호된(protected) 멤버 함수
이 름 | 설 명 |
overflow | std::streambuf 동작을 재정의한다. |
reserve | |
underflow | std::streambuf 동작을 재정의한다. |
basic_streambuf 클래스는 std::streambuf에서 파생되어, streambuf의 입/출력 시퀀스를 하나 이상의 문자 배열과 연결한다. 이러한 문자 배열은 basic_streambuf 개체의 내부에 있지만, I/O 작업에서 효율적으로 사용할 수 있도록 배열 요소에 대한 직접 액세스가 제공된다. basic_streambuf 개체의 출력 시퀀스에 기록된 문자는 동일 개체의 입력 시퀀스에 추가된다.
basic_streambuf 클래스의 공용 인터페이스는 다음 구현 전략을 허용하기 위한 것이다:
- 단일 연속 문자 배열은 문자 시퀀스의 크기 변경을 제공하기 위해 필요에 따라 다시 할당 된다. 이는 현재 Asio에서 사용되고 있는 구현 접근법이다.
- 하나 이상의 문자 배열 시퀀스는 각 배열이 같은 크기이다. 추가되는 문자 배열 개체는 문자 시퀀스의 크기 변경을 제공하기 위해 시퀀스에 추가된다.
- 다양한 크기를 갖는 하나 이상의 문자 배열 시퀀스이다. 추가되는 문자 배열 개체는 문자 시퀀스의 크기 변경을 제공하기 위해 시퀀스에 추가된다.
basic_streambuf의 생성자는 입/출력 시퀀스 크기의 합을 최대값으로 지정하는 size_t 인수를 받는다. basic_streambuf 개체의 수명 동안 다음을 변함없이 유지한다:
size() <= max_size()
개체 생성이 성공하면, 위의 불변성을 위반하는 멤버 함수는 std::length_error 종류의 예외를 발생해야 한다.
basic_streambuf의 생성자는 Allocator 인수를 갖는다. 이 인수의 복사본은 각 basic_streambuf 개체의 수명 동안 생성자와 모든 멤버 함수에서 수행하는 메모리 할당에 사용된다.
예 제
streambuf에서 소켓으로 직접 쓰기:
boost::asio::streambuf b; std::ostream os(&b); os << "Hello, World!\n"; // try sending some data in input sequence size_t n = sock.send(b.data()); b.consume(n); // sent data is removed from input sequence
소켓에서 streambuf로 직접 읽기:
boost::asio::streambuf b; // reserve 512 bytes in output sequence boost::asio::streambuf::mutable_buffers_type bufs = b.prepare(512); size_t n = sock.receive(bufs); // received data is "committed" from output sequence to input sequence b.commit(n); std::istream is(&b); std::string s; is >> s;
요구 사항
일반 헤더: boost/asio/basic_streambuf.hpp
편의 헤더: boost/asio.hpp
Boost.Asio 홈
728x90
반응형
'Boost C++ Libraries > Boost.Asio' 카테고리의 다른 글
Boost.Asio 색인 - dynamic_vector_buffer::mutable_buffers_type (0) | 2021.02.08 |
---|---|
Boost.Asio 색인 - dynamic_string_buffer::mutable_buffers_type (0) | 2021.02.08 |
Boost.Asio 색인 - basic_streambuf::mutable_buffers_type (0) | 2021.02.08 |
Boost.Asio 색인 - mutable_buffers_1::mutable_buffers_1 (0) | 2021.02.08 |
Boost.Asio 색인 - mutable_buffer::mutable_buffer (0) | 2021.02.08 |