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

pdcomm_tcp_cancel

함수

열린 트랜잭션을 취소합니다.

PdcommStatus pdcomm_tcp_cancel(PdcommTcpEndpoint *endpoint, PdcommTcpToken token, uint8_t *cancelled)

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

취소된 트랜잭션은 #PDCOMM_TCP_CANCELLED와 함께 #PDCOMM_TCP_FAILED 이벤트를 만들며, 이후 도착하는 그 트랜잭션의 응답은 #PDCOMM_TCP_UNEXPECTED_REPLY로 보고됩니다. 큐에 있지만 아직 쓰지 않은 프레임은 버립니다. 일부만 쓴 프레임을 취소하면 이미 회선에 나간 바이트를 되돌릴 수 없으므로 연결을 닫습니다.

매개변수

이름설명
endpoint유효한 엔드포인트입니다.
tokenpdcomm_tcp_request(), pdcomm_tcp_select(), pdcomm_tcp_deselect(), pdcomm_tcp_linktest()가 반환한 토큰입니다. reserved는 0이어야 합니다.
cancelled열린 트랜잭션을 취소했으면 1, 이미 끝났으면 0을 받습니다. 먼저 0으로 설정됩니다. NULL이 아니어야 합니다.

반환값

성공하면 실제로 취소했는지와 관계없이 #PDCOMM_OK를 반환합니다. cancelled 또는 endpoint가 NULL이거나 token.reserved가 0이 아니면 #PDCOMM_INVALID_ARGUMENT를 반환합니다. 토큰이 다른 엔드포인트나 이전 세대의 것이면 #PDCOMM_STALE_TOKEN을 반환합니다. 준비된 이벤트(staged event)가 있거나, 이벤트 큐가 가득 찼거나, 엔드포인트가 정지하는 중이면 #PDCOMM_BACKPRESSURE를 반환합니다. #PDCOMM_POISONED를 반환할 수도 있습니다.