pdcomm_secs1_next_event
함수
큐에서 가장 오래된 이벤트를 가져옵니다.
PdcommStatus pdcomm_secs1_next_event(PdcommSecs1Endpoint *endpoint, PdcommSecs1Event **out)큐가 비어 있으면 *out을 NULL로 두고 #PDCOMM_OK를 반환합니다. 이벤트 객체를 할당할 수 없으면 해당 이벤트를 그대로 준비해 두었다가(staged) 다음 호출에서 반환합니다. 그때까지 pdcomm_secs1_start(), pdcomm_secs1_poll(), pdcomm_secs1_submit(), pdcomm_secs1_reset(), pdcomm_secs1_stop()은 #PDCOMM_BACKPRESSURE를 반환합니다.
매개변수
| 이름 | 설명 |
|---|---|
endpoint | 생성되었거나 시작된 엔드포인트입니다(정지 상태가 아니어야 합니다). |
out | 이벤트 또는 NULL을 받습니다. 먼저 NULL로 설정됩니다. |
반환값
큐가 비어 있는 경우를 포함해 성공하면 #PDCOMM_OK를 반환합니다. out 또는 endpoint가 NULL이면 #PDCOMM_INVALID_ARGUMENT를 반환합니다. 이벤트를 할당하지 못하면 #PDCOMM_ALLOCATION_FAILED를 반환합니다(이벤트는 재시도를 위해 준비된 상태로 남습니다). 엔드포인트가 정지되었거나, 다른 스레드에서의 호출, 동시 호출, 재진입 호출이면 #PDCOMM_INVALID_STATE를 반환합니다. 엔드포인트가 오염(poisoned) 상태이면 #PDCOMM_POISONED를 반환합니다.
참고
- 소유권: pdcomm_secs1_event_destroy()로 각 이벤트를 해제합니다. 이벤트는 소유된 스냅샷이며 엔드포인트가 해제된 뒤에도 유효합니다.
- 스레드 안전성: 생성한 스레드에서만 호출합니다.