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

pdcomm_tcp_next_event

함수

엔드포인트의 이벤트 큐에서 가장 오래된 이벤트를 꺼냅니다.

PdcommStatus pdcomm_tcp_next_event(PdcommTcpEndpoint *endpoint, PdcommTcpEvent **out)

선언 위치: #include <pdcomm_tcp.h>

이벤트는 발생한 순서대로 반환됩니다. 이벤트 핸들 할당에 실패하면 이벤트는 엔드포인트 안에 준비된 상태(staged)로 남고, 다음에 성공하는 호출이 반환합니다. 준비된 이벤트가 있는 동안 pdcomm_tcp_start(), pdcomm_tcp_stop(), pdcomm_tcp_poll(), 제출 함수, pdcomm_tcp_cancel()은 #PDCOMM_BACKPRESSURE를 반환하므로, 폴링하거나 작업을 더 제출하기 전에 이벤트를 꺼내야 합니다.

매개변수

이름설명
endpoint유효한 엔드포인트입니다.
out이벤트를 받으며, 큐가 비어 있으면 NULL을 받습니다. 먼저 NULL로 설정됩니다. NULL이 아니어야 합니다.

반환값

성공하면 #PDCOMM_OK를 반환하며, 큐가 비어 있는 경우도 포함합니다. out 또는 endpoint가 NULL이면 #PDCOMM_INVALID_ARGUMENT를 반환합니다. 이벤트 핸들을 할당하지 못하면 #PDCOMM_ALLOCATION_FAILED를 반환합니다(이벤트는 재시도를 위해 준비된 상태로 남습니다). #PDCOMM_POISONED를 반환할 수도 있습니다.

참고

  • 소유권: pdcomm_tcp_event_destroy()로 각 이벤트를 해제합니다. 이벤트는 본문을 소유하며 엔드포인트가 해제된 뒤에도 유효합니다.
  • GEM 역할이 구성되어 있으면 pdcomm_gem_handle_event()로 이벤트를 읽습니다. 그래도 여기서 이벤트를 가져오는 호출은 필요합니다.