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

pdcomm::Secs1Event

클래스

SECS-I 끝점(endpoint) 이벤트 하나에 대한, 소유되고 변경할 수 없는 스냅숏입니다.

class Secs1Event

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

Secs1Endpoint::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 = default

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

Secs1Event

생성자

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

Secs1Event(Secs1Event &&other) noexcept

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

매개변수

이름설명
other원본 래퍼입니다. 빈 상태가 됩니다.

Secs1Event

생성자

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

Secs1Event(const Secs1Event &) = delete

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

body

메서드

수신한 메시지의 본문을 복사합니다.

std::vector<uint8_t> body() const

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

바이트는 수신한 그대로 재조립한 메시지 본문입니다. 끝점은 이를 SECS-II로 해석하지 않습니다. 본문이 없는 메시지와 PDCOMM_SECS1_EVENT_INBOUND가 아닌 모든 이벤트 종류에서는 빈 복사본을 반환합니다.

반환값

본문의 독립적인 복사본입니다.

참고

  • 예외 pdcomm::Error: 이벤트가 비어 있으면 PDCOMM_INVALID_ARGUMENT입니다.

info

메서드

pdcomm_secs1_event_info()로 이벤트를 설명합니다.

PdcommSecs1EventInfo info() const

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

이벤트 종류에 해당하지 않는 필드는 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 noexcept

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

Secs1Endpoint::nextEvent()는 큐가 비어 있으면 빈 이벤트를 반환합니다.

반환값

이벤트를 소유하면 true입니다.

operator=

메서드

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

Secs1Event &operator=(Secs1Event &&other) noexcept

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

매개변수

이름설명
other원본 래퍼입니다. 빈 상태가 됩니다.

반환값

이 래퍼입니다.

operator=

메서드

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

Secs1Event &operator=(const Secs1Event &) = delete

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

~Secs1Event

메서드

pdcomm_secs1_event_destroy()로 네이티브 이벤트를 해제합니다.

~Secs1Event()

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

어느 스레드에서든 이벤트를 해제할 수 있습니다. 빈 이벤트는 아무것도 해제하지 않습니다.