pdcomm_opcua_client_take_response
함수
요청 하나의 검증된 응답을 가져옵니다.
int32_t pdcomm_opcua_client_take_response(pdcomm_opcua_handle client, uint32_t request, pdcomm_opcua_handle *out)#PDCOMM_OPCUA_OK는 본문을 완전히 디코딩했고, requestHandle이 일치하며, 기대한 응답 형식이거나 Bad serviceResult를 가진 ServiceFault라는 뜻입니다. pdcomm_opcua_response_get_info()와 본문의 작업별 결과를 확인합니다. Bad 작업 결과도 OK입니다.
이 검증에 실패한 응답은 클라이언트를 닫고 #PDCOMM_OPCUA_RUNTIME_ERROR를 반환합니다. 서버가 Part 6 abort 청크로 응답을 중단하면 해당 요청만 실패합니다. 호출은 마지막 오류 텍스트에 abort StatusCode를 담아 #PDCOMM_OPCUA_RUNTIME_ERROR를 반환하며, 요청은 완료되고 연결은 계속 사용할 수 있습니다.
핸들 레지스트리가 가득 차면 호출은 #PDCOMM_OPCUA_LIMIT를 반환하고 응답을 보류합니다. 다른 버퍼를 해제한 뒤, begin, poll, 활성화, close를 호출하기 전에 같은 요청으로 이 함수를 다시 호출합니다. 그동안 이 호출들은 #PDCOMM_OPCUA_BUSY를 반환합니다.
매개변수
| 이름 | 설명 |
|---|---|
client | 클라이언트 핸들입니다. |
request | pdcomm_opcua_client_begin()이 반환한 ID입니다. |
out | 응답 버퍼 핸들을 받습니다. OK가 아니면 0입니다. |
반환값
성공하면 #PDCOMM_OPCUA_OK를 반환합니다. 응답이 아직 도착하지 않았으면 #PDCOMM_OPCUA_EMPTY를, 요청 ID를 알 수 없거나 이미 완료되었으면 #PDCOMM_OPCUA_INVALID_INPUT을, 다른 응답이 보류되어 있으면 #PDCOMM_OPCUA_BUSY를 반환합니다. 그 밖에 #PDCOMM_OPCUA_RUNTIME_ERROR, #PDCOMM_OPCUA_LIMIT, #PDCOMM_OPCUA_CLOSED, #PDCOMM_OPCUA_INVALID_HANDLE, #PDCOMM_OPCUA_POISONED를 반환할 수 있습니다.