pdcomm::Buffer
클래스
바이트 시퀀스를 소유하는 불변(immutable) 사본입니다.
class BufferBuffer는 pdcomm_buffer_create()가 만든 PdcommBuffer 핸들을 감쌉니다. 입력 바이트는 생성할 때 복사되므로, 이후 원본을 바꾸거나 해제해도 됩니다.
참고
- 이동 전용(move-only)입니다. 하나의 Buffer에서 bytes()를 동시에 실행할 수 있지만, 소멸은 다른 호출과 경합하면 안 됩니다.
멤버
Buffer
생성자
other가 소유한 네이티브 핸들의 소유권을 가져옵니다.
Buffer(Buffer &&other) noexcept매개변수
| 이름 | 설명 |
|---|---|
other | 원본 래퍼입니다. 이 래퍼는 비게 되며, 여기에 bytes()를 호출하면 예외를 던집니다. |
Buffer
생성자
복사할 수 없습니다. 래퍼가 네이티브 핸들을 단독으로 소유합니다.
Buffer(const Buffer &) = deleteBuffer
생성자
data에서 length바이트를 새 네이티브 버퍼로 복사합니다.
Buffer(const uint8_t *data, size_t length, size_t limit)매개변수
| 이름 | 설명 |
|---|---|
data | 복사할 첫 바이트입니다. length가 0일 때만 nullptr일 수 있습니다. |
length | 복사할 바이트 수입니다. |
limit | 허용하는 최대 길이입니다. 프로토콜 한도가 아니라 애플리케이션 정책입니다. |
참고
- 예외
pdcomm::Error:length가 0이 아닌데data가nullptr이면PDCOMM_INVALID_ARGUMENT,length가limit보다 크면PDCOMM_LIMIT_EXCEEDED, 메모리가 부족하면PDCOMM_ALLOCATION_FAILED입니다.
bytes
메서드
버퍼 내용을 새 벡터로 복사합니다.
std::vector<uint8_t> bytes() constpdcomm_buffer_copy()를 두 번 호출합니다. 처음에는 길이를 읽고, 다음에는 복사합니다.
반환값
저장된 바이트의 사본입니다. 버퍼에 바이트가 없으면 비어 있습니다.
참고
- 예외
pdcomm::Error: 이 Buffer가 이동된(moved-from) 상태이면PDCOMM_INVALID_ARGUMENT입니다.
operator=
메서드
현재 핸들을 해제한 뒤 other가 소유한 핸들의 소유권을 가져옵니다.
Buffer &operator=(Buffer &&other) noexcept매개변수
| 이름 | 설명 |
|---|---|
other | 원본 래퍼입니다. 이 래퍼는 비게 됩니다. |
반환값
이 래퍼입니다.
operator=
메서드
복사 대입할 수 없습니다. 래퍼가 네이티브 핸들을 단독으로 소유합니다.
Buffer &operator=(const Buffer &) = delete~Buffer
메서드
pdcomm_buffer_destroy()로 네이티브 핸들을 해제합니다.
~Buffer()이동된(moved-from) Buffer는 아무것도 해제하지 않습니다.