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

pdcomm_gem_host_acknowledge_event

함수

수신한 S6F11에 대해 Event Report Acknowledge(S6F12)를 보냅니다.

PdcommStatus pdcomm_gem_host_acknowledge_event(PdcommTcpEndpoint *endpoint, PdcommGemResult *result, uint8_t acknowledgement)

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

검증을 마친 S6F11은 결과 유형이 #PDCOMM_GEM_EVENT_RECEIVED이고 reply_sent가 0인 #PDCOMM_GEM_PRIMARY 결과를 만듭니다. 자동 확인 응답은 없습니다. 애플리케이션이 보고서를 수락하거나 거부한 뒤에만 확인 응답을 보냅니다. 결과는 원래 메시지 헤더와 본문의 소유 사본을 보관하므로, 원래 TCP 이벤트는 이미 해제되어 있어도 됩니다. 성공하면 결과가 확인 응답 완료로 표시되고 acknowledgement와 reply_sent 필드가 설정되며, 다시 호출하면 #PDCOMM_STALE_TOKEN을 반환합니다. 할당 실패나 배압(backpressure) 실패가 발생하면 결과는 확인 응답 전 상태로 남으므로 확인 응답만 다시 시도할 수 있습니다.

매개변수

이름설명
endpointresult를 만든 호스트 엔드포인트입니다.
resultpdcomm_gem_handle_event()가 만든 이벤트 결과입니다.
acknowledgementACKC6 값이며 0(수락)부터 63까지입니다.

반환값

S6F12를 큐에 넣었으면 #PDCOMM_OK를 반환합니다. endpoint 또는 result가 NULL이거나, acknowledgement가 63보다 크거나, result가 수신한 이벤트 보고서가 아니면 #PDCOMM_INVALID_ARGUMENT를 반환합니다. 결과에 이미 확인 응답했거나, 다른 엔드포인트 또는 연결 세대에서 왔거나, 같은 연결에서 Deselect/재선택 이전에 만들어졌거나, 수신 TCP 트랜잭션에 이미 응답했으면 #PDCOMM_STALE_TOKEN을 반환합니다. 엔드포인트가 호스트가 아니거나 Communicating 상태가 아니면 #PDCOMM_INVALID_STATE를 반환합니다. 준비된 TCP 이벤트(staged event)가 있거나 송신 큐가 가득 차면 #PDCOMM_BACKPRESSURE를 반환합니다. 그 밖에 #PDCOMM_ALLOCATION_FAILED, #PDCOMM_INVALID_DATA, #PDCOMM_IO_ERROR, #PDCOMM_POISONED를 반환합니다.

참고

  • 스레드 안전성: 이 호출은 result를 변경합니다. 같은 결과에 대한 getter나 해제와 절대 동시에 실행하지 않습니다.