콘텐츠로 이동
무료 평가 시작

pdcomm::Buffer

클래스

바이트 시퀀스를 소유하는 불변(immutable) 사본입니다.

class Buffer

선언 위치: #include <pdcomm.hpp>

Buffer는 pdcomm_buffer_create()가 만든 PdcommBuffer 핸들을 감쌉니다. 입력 바이트는 생성할 때 복사되므로, 이후 원본을 바꾸거나 해제해도 됩니다.

참고

  • 이동 전용(move-only)입니다. 하나의 Buffer에서 bytes()를 동시에 실행할 수 있지만, 소멸은 다른 호출과 경합하면 안 됩니다.

멤버

Buffer

생성자

other가 소유한 네이티브 핸들의 소유권을 가져옵니다.

Buffer(Buffer &&other) noexcept

선언 위치: #include <pdcomm.hpp>

매개변수

이름설명
other원본 래퍼입니다. 이 래퍼는 비게 되며, 여기에 bytes()를 호출하면 예외를 던집니다.

Buffer

생성자

복사할 수 없습니다. 래퍼가 네이티브 핸들을 단독으로 소유합니다.

Buffer(const Buffer &) = delete

선언 위치: #include <pdcomm.hpp>

Buffer

생성자

data에서 length바이트를 새 네이티브 버퍼로 복사합니다.

Buffer(const uint8_t *data, size_t length, size_t limit)

선언 위치: #include <pdcomm.hpp>

매개변수

이름설명
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() const

선언 위치: #include <pdcomm.hpp>

pdcomm_buffer_copy()를 두 번 호출합니다. 처음에는 길이를 읽고, 다음에는 복사합니다.

반환값

저장된 바이트의 사본입니다. 버퍼에 바이트가 없으면 비어 있습니다.

참고

  • 예외 pdcomm::Error: 이 Buffer가 이동된(moved-from) 상태이면 PDCOMM_INVALID_ARGUMENT입니다.

operator=

메서드

현재 핸들을 해제한 뒤 other가 소유한 핸들의 소유권을 가져옵니다.

Buffer &operator=(Buffer &&other) noexcept

선언 위치: #include <pdcomm.hpp>

매개변수

이름설명
other원본 래퍼입니다. 이 래퍼는 비게 됩니다.

반환값

이 래퍼입니다.

operator=

메서드

복사 대입할 수 없습니다. 래퍼가 네이티브 핸들을 단독으로 소유합니다.

Buffer &operator=(const Buffer &) = delete

선언 위치: #include <pdcomm.hpp>

~Buffer

메서드

pdcomm_buffer_destroy()로 네이티브 핸들을 해제합니다.

~Buffer()

선언 위치: #include <pdcomm.hpp>

이동된(moved-from) Buffer는 아무것도 해제하지 않습니다.