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

pdcomm_gem_host_report_query

함수

호스트에서 Event Report, Individual Report 또는 Annotated Individual Report 요청을 보냅니다.

PdcommStatus pdcomm_gem_host_report_query(PdcommTcpEndpoint *endpoint, uint32_t kind, uint32_t id, PdcommTcpToken *out_token)

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

ID는 U4로 전송되며, 호스트가 공유하는 max_pending_ids의 엔트리 하나를 사용합니다. pdcomm_tcp.h의 32개 슬롯, T3, 취소, 토큰 규칙이 적용됩니다. 응답은 요청 종류 kind와 결과 유형 #PDCOMM_GEM_EVENT_QUERY_RECEIVED, #PDCOMM_GEM_INDIVIDUAL_QUERY_RECEIVED 또는 #PDCOMM_GEM_ANNOTATED_QUERY_RECEIVED를 가진 #PDCOMM_GEM_RESPONSE로 도착합니다. S6F16은 요청한 CEID를 그대로 돌려줘야 하며, 그렇지 않으면 결과는 #PDCOMM_GEM_INVALID_RESPONSE입니다. S6F20과 S6F22에는 RPTID가 없으므로 결과는 요청한 ID를 보고합니다.

매개변수

이름설명
endpoint호스트 엔드포인트입니다.
kind#PDCOMM_GEM_EVENT_QUERY(S6F15), #PDCOMM_GEM_INDIVIDUAL_QUERY(S6F19), #PDCOMM_GEM_ANNOTATED_QUERY(S6F21) 중 하나입니다.
id#PDCOMM_GEM_EVENT_QUERY이면 CEID, 그 밖에는 RPTID입니다.
out_token먼저 0으로 초기화되며, 성공하면 트랜잭션 토큰을 받습니다. NULL이 아니어야 합니다.

반환값

요청을 큐에 넣었으면 #PDCOMM_OK를 반환합니다. endpoint 또는 out_token이 NULL이거나 kind를 알 수 없으면 #PDCOMM_INVALID_ARGUMENT를 반환합니다. max_pending_ids 또는 호스트 항목 한도를 넘게 되면 #PDCOMM_LIMIT_EXCEEDED를 반환합니다. 엔드포인트가 호스트가 아니거나 Communicating 상태가 아니면 #PDCOMM_INVALID_STATE를 반환합니다. 준비된 TCP 이벤트(staged event)가 있거나 대기 슬롯 또는 송신 큐가 가득 차면 #PDCOMM_BACKPRESSURE를 반환합니다. 그 밖에 #PDCOMM_ALLOCATION_FAILED, #PDCOMM_IO_ERROR, #PDCOMM_POISONED를 반환합니다.

참고

  • 송신에 성공했다고 응답을 받은 것은 아닙니다.