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

pdcomm_gem_program_grant

함수

S7F1 공정 프로그램 적재 문의(process program load inquire)를 보냅니다.

PdcommStatus pdcomm_gem_program_grant(PdcommTcpEndpoint *endpoint, const PdcommSecsItem *id, uint32_t length, PdcommTcpToken *out_token)

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

본문이 length바이트인 프로그램을 보내도 되는지 상대에게 허가를 요청합니다. S7F2 허가(PPGNT)는 #PDCOMM_GEM_PROGRAM_GRANT_RECEIVED 결과로 도착합니다.

모든 송신 프로그램 요청에는 프로그램 저장소와 GEM Communicating 상태가 필요합니다. 요청은 공유 대기 슬롯 32개 중 하나를 차지하고, 일반적인 TCP 토큰, 취소, T3 동작을 따릅니다. 또한 요청의 PPID만큼 max_pending_ids와 max_pending_identifier_bytes 예산을 차감하며, 호스트이면 공유 예산인 PdcommGemHostOptions::max_pending_ids도 차감합니다. 성공은 요청이 큐에 들어갔다는 뜻이며, 허가되었거나 확인 응답을 받았거나 응답을 받았다는 뜻은 아닙니다.

매개변수

이름설명
endpoint프로그램 저장소가 있고 Communicating 상태인 GEM 엔드포인트입니다.
idPPID 항목: 비어 있지 않은 ASCII 또는 Binary입니다.
lengthLENGTH: PPBODY 페이로드 크기(바이트)입니다.
out_token요청 토큰을 받습니다. 먼저 0으로 초기화되므로 실패하면 항상 0입니다. NULL이 아니어야 합니다.

반환값

요청이 큐에 들어가면 #PDCOMM_OK를 반환합니다. 인수가 NULL이거나 PPID가 비어 있지 않은 ASCII 또는 Binary 항목이 아니면 #PDCOMM_INVALID_ARGUMENT를 반환합니다. 프로그램 저장소가 구성되지 않았거나 GEM이 Communicating 상태가 아니면 #PDCOMM_INVALID_STATE를 반환합니다. 준비된 TCP 이벤트(staged event)가 대기 중이거나, 빈 대기 슬롯이 없거나, 송신 큐가 가득 차면 #PDCOMM_BACKPRESSURE를 반환합니다. PPID가 120바이트보다 길거나, 메시지가 GEM 항목 한도를 넘거나, 대기 PPID 예산을 넘으면 #PDCOMM_LIMIT_EXCEEDED를 반환합니다. 그 밖에 #PDCOMM_ALLOCATION_FAILED, TCP 상태 코드, #PDCOMM_POISONED를 반환할 수 있습니다.