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

pdcomm_gem_formatted_program_submit

함수

호스트로 S7F27 Process Program Verification Send를 보냅니다.

PdcommStatus pdcomm_gem_formatted_program_submit(PdcommTcpEndpoint *endpoint, const PdcommSecsItem *id, const PdcommGemFormattedProgramIssue *issues, size_t issue_count, PdcommTcpToken *out_token)

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

장비 전용입니다. 식별자와 텍스트를 포함한 모든 문제를 구성된 한도로 검증하고 복사한 뒤 S7F27을 큐에 넣습니다. 성공은 메시지가 송신용으로 접수되었다는 뜻이며, 호스트가 응답했다는 뜻은 아닙니다. S7F28 응답, T3 시간 초과(timeout), 연결 끊김은 나중에 반환된 토큰과 함께 pdcomm_gem_handle_event()로 보고됩니다.

매개변수

이름설명
endpointGEM COMMUNICATING 상태인 장비 엔드포인트입니다.
idPPID: 최대 120바이트이며 비어 있지 않은 ASCII 또는 Binary 항목입니다.
issuesissue_count개의 문제 배열입니다. issue_count가 0이면 NULL일 수 있으며, 이때는 빈 문제 목록을 보냅니다.
issue_count문제 개수입니다. 최대 max_issues입니다.
out_token트랜잭션 토큰을 받습니다. NULL이 아니면 항상 먼저 0으로 초기화되므로, 실패하면 항상 0입니다.

반환값

S7F27을 큐에 넣었으면 #PDCOMM_OK를 반환합니다. 포인터가 NULL이거나, PPID가 최대 120바이트인 비어 있지 않은 ASCII 또는 Binary 항목이 아니거나, 문제 코드가 5보다 크거나, 문제 텍스트가 ASCII가 아니거나, 문제 한도(max_issues, max_issue_text_bytes, max_total_issue_text_bytes)를 넘으면 #PDCOMM_INVALID_ARGUMENT를 반환합니다. 엔드포인트가 COMMUNICATING 상태의 장비가 아니거나 서비스가 구성되지 않았으면 #PDCOMM_INVALID_STATE를 반환합니다. 준비된 TCP 이벤트(staged event)를 먼저 비워야 하거나, GEM 요청 슬롯 32개가 모두 사용 중이거나, TCP 송신 큐가 가득 차면 #PDCOMM_BACKPRESSURE를 반환합니다. 이미 max_pending개의 보고서가 대기 중이거나 메시지가 엔드포인트의 SECS-II 한도를 넘으면 #PDCOMM_LIMIT_EXCEEDED를 반환합니다. 메시지를 큐에 넣을 수 없으면 #PDCOMM_IO_ERROR 같은 그 밖의 TCP 상태 코드를 반환합니다. 엔드포인트가 오염(poisoned) 상태이면 #PDCOMM_POISONED를 반환합니다.

참고

  • 소유권: id와 issues는 호출자가 계속 소유합니다.
  • 스레드 안전성: endpoint에 대한 다른 모든 호출과 직렬화합니다.