pdcomm_gem_formatted_program_validate_selection_for_execution
함수
선택 토큰이 실행에 여전히 유효한지 확인하고 선택된 프로그램의 스냅샷을 반환합니다.
PdcommStatus pdcomm_gem_formatted_program_validate_selection_for_execution(PdcommTcpEndpoint *endpoint, const PdcommGemFormattedProgramSelectionToken *token, uint32_t *out_stale_reason, PdcommGemFormattedProgramSelectionSnapshot **out_snapshot)토큰이 현재 선택을 가리켜야 하고, 저장소 엔트리가 바뀌지 않아야 하며, 선택이 이루어진 세션이 여전히 현재 세션이어야 합니다. 성공하면 스냅샷은 valid_for_execution = 1인 READY 상태입니다. 토큰이 무효(stale)이거나 일치하지 않으면 그 사유를 out_stale_reason에 보고합니다.
매개변수
| 이름 | 설명 |
|---|---|
endpoint | 정형 프로그램 조회 서비스가 구성된 장비 엔드포인트입니다. |
token | pdcomm_gem_formatted_program_select()가 반환한 토큰입니다. |
out_stale_reason | 성공하면 #PDCOMM_GEM_FORMATTED_PROGRAM_SELECTION_STALE_NONE을 받습니다. 호출이 #PDCOMM_STALE_TOKEN을 반환하면 사유를 받습니다. 선택된 것이 없으면 CLEARED, 토큰이 다른 선택을 가리키면 TOKEN_MISMATCH, 그 밖에는 1~4의 무효 사유입니다. |
out_snapshot | 검증된 스냅샷을 받습니다. 두 출력 포인터가 모두 NULL이 아니면 NULL로 설정되고, out_stale_reason은 STALE_NONE으로 설정됩니다. |
반환값
선택이 유효하면 #PDCOMM_OK를 반환합니다. 유효하지 않으면 #PDCOMM_STALE_TOKEN을 반환합니다(out_stale_reason 참고). endpoint, token, out_stale_reason 또는 out_snapshot이 NULL이거나 토큰 헤더가 유효하지 않으면 #PDCOMM_INVALID_ARGUMENT를 반환합니다. 엔드포인트가 장비가 아니거나 조회 서비스가 구성되지 않았으면 #PDCOMM_INVALID_STATE를 반환합니다. 준비된 TCP 이벤트(staged event)를 먼저 비워야 하면 #PDCOMM_BACKPRESSURE를 반환합니다. 사본을 만들 수 없으면 #PDCOMM_ALLOCATION_FAILED 또는 #PDCOMM_LIMIT_EXCEEDED를 반환합니다. 엔드포인트가 오염(poisoned) 상태이면 #PDCOMM_POISONED를 반환합니다.
참고
- 소유권: pdcomm_gem_formatted_program_selection_snapshot_destroy()로 스냅샷을 해제합니다.
- 결과는 특정 시점의 검사입니다. 저장소나 세션을 바꿀 수 있는 호출 뒤에는 다시 검증합니다.
- 스레드 안전성:
endpoint에 대한 다른 모든 호출과 직렬화합니다.