pdcomm_gem_formatted_program_query_respond
함수
수신한 S7F25에 대해 프로그램 저장소의 내용으로 S7F26 응답을 보냅니다.
PdcommStatus pdcomm_gem_formatted_program_query_respond(PdcommTcpEndpoint *endpoint, PdcommGemResult *result)장비 전용입니다. 응답에는 요청한 PPID로 저장된 프로그램이 들어 있으며, 저장소에 해당 프로그램이 없으면 길이가 0인 List가 들어갑니다. 응답 내용은 첫 시도에서 고정되므로, #PDCOMM_BACKPRESSURE 뒤에 다시 시도하면 그사이 저장소가 바뀌었더라도 같은 내용을 보냅니다. 호출이 성공하면 결과 유형이 #PDCOMM_GEM_REPLIED가 되고 reply_sent가 1이 되며, 결과는 아래 접근자 함수로 반환된 프로그램을 제공합니다. 응답을 보낸 뒤 다시 호출하면 다시 보내지 않고 #PDCOMM_OK를 반환합니다.
매개변수
| 이름 | 설명 |
|---|---|
endpoint | GEM COMMUNICATING 상태인 장비 엔드포인트입니다. |
result | 결과 유형이 #PDCOMM_GEM_FORMATTED_PROGRAM_QUERY_RECEIVED인 결과입니다. |
반환값
S7F26을 큐에 넣었거나 이미 보냈으면 #PDCOMM_OK를 반환합니다. endpoint 또는 result가 NULL이면 #PDCOMM_INVALID_ARGUMENT를 반환합니다. 엔드포인트가 COMMUNICATING 상태의 장비가 아니거나, 서비스가 구성되지 않았거나, result가 조회 결과가 아니면 #PDCOMM_INVALID_STATE를 반환합니다. result가 수신한 S7F25가 아니거나, 다른 엔드포인트 또는 이전 HSMS 세션이나 선택(selection)에서 왔으면 #PDCOMM_STALE_TOKEN을 반환합니다. 준비된 TCP 이벤트(staged event)를 먼저 비워야 하거나 TCP 송신 큐가 가득 차면 #PDCOMM_BACKPRESSURE를 반환합니다(나중에 다시 시도합니다). 응답을 만들 수 없으면 #PDCOMM_INVALID_DATA 또는 #PDCOMM_LIMIT_EXCEEDED를 반환합니다. 큐에 넣을 수 없으면 그 밖의 TCP 상태 코드를 반환합니다. #PDCOMM_ALLOCATION_FAILED를 반환할 수도 있습니다. 엔드포인트가 오염(poisoned) 상태이면 #PDCOMM_POISONED를 반환합니다.
참고
- 스레드 안전성:
endpoint에 대한 다른 모든 호출과 직렬화하며, 이 호출 중에는 다른 스레드에서result를 읽지 않습니다.