pdcomm::Secs1Event
클래스
SECS-I 끝점(endpoint) 이벤트 하나에 대한, 소유되고 변경할 수 없는 스냅숏입니다.
class Secs1EventSecs1Endpoint::nextEvent()는 큐에 들어간 순서대로 이벤트를 반환합니다. info()로 종류를 알 수 있습니다. 종류는 수신한 메시지(PDCOMM_SECS1_EVENT_INBOUND), 제출한 메시지의 블록 수준 전달 완료(PDCOMM_SECS1_EVENT_OUTBOUND_COMPLETE), 전달되지 않은 제출(PDCOMM_SECS1_EVENT_OUTBOUND_FAILED), 종료성 결함(PDCOMM_SECS1_EVENT_FAULT) 중 하나입니다. body()는 수신한 메시지의 본문을 복사합니다.
끝점과 달리 이벤트는 끝점의 스레드에 묶이지 않으며, 끝점이 소멸된 뒤에도 유효합니다.
참고
PdcommSecs1Event를 감싸는 이동 전용(move-only) RAII 래퍼입니다. info()와 body()는 어느 스레드에서든 동시에 실행할 수 있습니다. 소멸은 이 호출들과 경합하면 안 됩니다. body()는std::bad_alloc도 던질 수 있습니다.
멤버
Secs1Event
생성자
네이티브 핸들을 소유하지 않는 빈 이벤트를 만듭니다.
Secs1Event() noexcept = defaultSecs1Event
생성자
other가 소유한 네이티브 핸들의 소유권을 가져옵니다.
Secs1Event(Secs1Event &&other) noexcept매개변수
| 이름 | 설명 |
|---|---|
other | 원본 래퍼입니다. 빈 상태가 됩니다. |
Secs1Event
생성자
복사할 수 없습니다. 래퍼가 네이티브 핸들을 단독으로 소유합니다.
Secs1Event(const Secs1Event &) = deletebody
메서드
수신한 메시지의 본문을 복사합니다.
std::vector<uint8_t> body() const바이트는 수신한 그대로 재조립한 메시지 본문입니다. 끝점은 이를 SECS-II로 해석하지 않습니다. 본문이 없는 메시지와 PDCOMM_SECS1_EVENT_INBOUND가 아닌 모든 이벤트 종류에서는 빈 복사본을 반환합니다.
반환값
본문의 독립적인 복사본입니다.
참고
- 예외
pdcomm::Error: 이벤트가 비어 있으면PDCOMM_INVALID_ARGUMENT입니다.
info
메서드
pdcomm_secs1_event_info()로 이벤트를 설명합니다.
PdcommSecs1EventInfo info() const이벤트 종류에 해당하지 않는 필드는 0입니다. 수신한 메시지는 블록 헤더 필드(장치 ID, R 비트로 나타낸 방향, 스트림, 펑션, W 비트, 시스템 바이트(system bytes))와 본문 길이를 담습니다. 송신 이벤트와 제출을 중단시킨 결함은 제출 토큰을 담습니다. 결함은 fault_kind, fault_detail, discarded_partial을 담습니다.
반환값
라이브러리가 struct_size를 설정한 설명입니다.
참고
- 예외
pdcomm::Error: 이벤트가 비어 있으면PDCOMM_INVALID_ARGUMENT입니다.
operator bool
메서드
래퍼가 네이티브 이벤트를 소유하는지 알려 줍니다.
explicit operator bool() const noexceptSecs1Endpoint::nextEvent()는 큐가 비어 있으면 빈 이벤트를 반환합니다.
반환값
이벤트를 소유하면 true입니다.
operator=
메서드
현재 핸들을 해제한 뒤 other가 소유한 핸들의 소유권을 가져옵니다.
Secs1Event &operator=(Secs1Event &&other) noexcept매개변수
| 이름 | 설명 |
|---|---|
other | 원본 래퍼입니다. 빈 상태가 됩니다. |
반환값
이 래퍼입니다.
operator=
메서드
복사 대입할 수 없습니다. 래퍼가 네이티브 핸들을 단독으로 소유합니다.
Secs1Event &operator=(const Secs1Event &) = delete~Secs1Event
메서드
pdcomm_secs1_event_destroy()로 네이티브 이벤트를 해제합니다.
~Secs1Event()어느 스레드에서든 이벤트를 해제할 수 있습니다. 빈 이벤트는 아무것도 해제하지 않습니다.