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

pdcomm_tcp_reply

함수

W 비트가 설정된 수신 1차 메시지에 대한 응답을 제출합니다.

PdcommStatus pdcomm_tcp_reply(PdcommTcpEndpoint *endpoint, const PdcommTcpEvent *primary, uint8_t stream, uint8_t function, uint8_t wait, const uint8_t *body, size_t body_length)

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

응답은 1차 메시지의 시스템 바이트(system bytes)를 그대로 사용합니다. W 비트가 설정된 1차 메시지는 응답하거나 연결이 Deselect되거나 닫힐 때까지 #PDCOMM_TCP_MAX_TRANSACTIONS개의 수신 슬롯 중 하나를 차지하므로, 모든 1차 메시지에 응답해야 합니다. 본문은 검증한 뒤 복사합니다. 성공은 응답을 큐에 넣었다는 뜻일 뿐입니다.

매개변수

이름설명
endpoint#PDCOMM_TCP_SELECTED 상태인 유효한 엔드포인트입니다.
primary1차 메시지의 #PDCOMM_TCP_RECEIVED 이벤트입니다. 이 엔드포인트의 현재 세대에서 온 것이어야 하며, 읽기만 합니다.
streamSECS-II 스트림입니다. 1차 메시지의 스트림과 같아야 합니다.
function1차 메시지의 펑션에 1을 더한 값입니다. SxF0 중단(abort) 응답이면 0입니다.
wait응답은 W 비트를 설정할 수 없으므로 0이어야 합니다.
body완전하게 인코딩된 SECS-II 항목 하나입니다. 본문이 없는 응답이면 NULL과 body_length 0을 전달합니다.
body_lengthbody의 바이트 수입니다. 최대 PdcommTcpOptions::max_frame_bytes에서 14를 뺀 값입니다.

반환값

응답을 큐에 넣었으면 #PDCOMM_OK를 반환합니다. endpoint 또는 primary가 NULL이거나, primary가 수신 1차 메시지가 아니거나, 1차 메시지에 W 비트가 없거나 이미 응답했거나, stream, function, wait가 유효한 응답을 이루지 않거나, 길이가 0이 아닌데 body가 NULL이면 #PDCOMM_INVALID_ARGUMENT를 반환합니다. primary가 다른 엔드포인트나 이전 세대에서 왔으면 #PDCOMM_STALE_TOKEN을 반환합니다. 본문이 유효하지 않으면 #PDCOMM_INVALID_DATA를 반환합니다. 본문이 item_limits를 넘거나 프레임에 들어가지 않으면 #PDCOMM_LIMIT_EXCEEDED를 반환합니다. 엔드포인트가 SELECTED 상태가 아니면 #PDCOMM_INVALID_STATE를 반환합니다. 준비된 이벤트(staged event)가 있거나, 큐가 가득 찼거나, 엔드포인트가 정지하는 중이면 #PDCOMM_BACKPRESSURE를 반환합니다. #PDCOMM_POISONED를 반환할 수도 있습니다.