pdcomm_tcp_next_event
함수
엔드포인트의 이벤트 큐에서 가장 오래된 이벤트를 꺼냅니다.
PdcommStatus pdcomm_tcp_next_event(PdcommTcpEndpoint *endpoint, PdcommTcpEvent **out)이벤트는 발생한 순서대로 반환됩니다. 이벤트 핸들 할당에 실패하면 이벤트는 엔드포인트 안에 준비된 상태(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()로 이벤트를 읽습니다. 그래도 여기서 이벤트를 가져오는 호출은 필요합니다.