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

pdcomm_opcua_client_take_response

함수

요청 하나의 검증된 응답을 가져옵니다.

int32_t pdcomm_opcua_client_take_response(pdcomm_opcua_handle client, uint32_t request, pdcomm_opcua_handle *out)

선언 위치: #include <pdcomm/opcua/pdcomm_opcua.h>

#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클라이언트 핸들입니다.
requestpdcomm_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를 반환할 수 있습니다.