pdcomm_gem_formatted_program_verification_submit
함수
준비된 결과에 대해 S7F29 검증 문의를 보냅니다.
PdcommStatus pdcomm_gem_formatted_program_verification_submit(PdcommTcpEndpoint *endpoint, PdcommGemResult *prepared, PdcommTcpToken *out_token)성공은 문의를 큐에 넣었다는 뜻입니다. S7F30 허가 응답, 시간 초과(timeout), 연결 끊김은 나중에 pdcomm_gem_handle_event()를 통해 결과를 만듭니다. 성공하면 준비된 결과의 submitted 플래그가 1이 됩니다.
매개변수
| 이름 | 설명 |
|---|---|
endpoint | 결과를 준비한 Communicating 상태의 GEM 장비 엔드포인트입니다. |
prepared | pdcomm_gem_formatted_program_verification_prepare()가 만든 결과입니다. |
out_token | S7F29 트랜잭션 토큰을 받습니다. NULL이 아니면 항상 먼저 0으로 초기화되므로, 실패하면 항상 0입니다. |
반환값
문의를 큐에 넣었으면 #PDCOMM_OK를 반환합니다. 포인터가 NULL이면 #PDCOMM_INVALID_ARGUMENT를 반환합니다. 엔드포인트가 Communicating 상태의 GEM 장비가 아니거나, 서비스가 구성되지 않았거나, prepared가 협상 결과가 아니면 #PDCOMM_INVALID_STATE를 반환합니다. prepared가 이 엔드포인트의 장비 측 레코드가 아니거나, 준비한 뒤 세션이 다시 선택되었거나 다시 연결되었거나, 협상이 이미 끝났으면 #PDCOMM_STALE_TOKEN을 반환합니다. 엔드포인트에 준비된 TCP 이벤트(staged event)가 있거나, GEM 요청 슬롯 32개가 모두 사용 중이거나, 송신 큐가 가득 차면 #PDCOMM_BACKPRESSURE를 반환합니다. 제출된 협상이 이미 max_pending개이면 #PDCOMM_LIMIT_EXCEEDED를 반환합니다. 문의를 이미 제출했을 때도 #PDCOMM_INVALID_STATE를 반환합니다. 그 밖에 #PDCOMM_IO_ERROR 같은 TCP 상태 코드와 #PDCOMM_POISONED를 반환합니다.