pdcomm_tcp_deselect
함수
SELECTED 상태에서 벗어나기 위해 Deselect.req를 보냅니다.
PdcommStatus pdcomm_tcp_deselect(PdcommTcpEndpoint *endpoint, PdcommTcpToken *out_token)상대방이 DeselectStatus 0으로 응답하면 열린 모든 트랜잭션이 #PDCOMM_TCP_DESELECTED로 실패하고, 응답하지 않은 수신 1차 메시지는 버려지며, 상태는 T7 타이머가 동작하는 #PDCOMM_TCP_NOT_SELECTED가 됩니다. 0이 아닌 상태 값이면 반환된 토큰에 대해 #PDCOMM_TCP_DESELECT_STATUS가 생성됩니다. HSMS-SS(SEMI E37.1)만 구현한 상대방은 Deselect를 지원하지 않을 수 있습니다.
매개변수
| 이름 | 설명 |
|---|---|
endpoint | #PDCOMM_TCP_SELECTED 상태인 유효한 엔드포인트입니다. |
out_token | 제어 트랜잭션 토큰을 받습니다. 실패하면 항상 모두 0입니다. NULL이 아니어야 합니다. |
반환값
Deselect.req를 큐에 넣었으면 #PDCOMM_OK를 반환합니다. out_token 또는 endpoint가 NULL이면 #PDCOMM_INVALID_ARGUMENT를 반환합니다. 엔드포인트가 SELECTED 상태가 아니면 #PDCOMM_INVALID_STATE를 반환합니다. Deselect가 이미 진행 중이거나, 모든 트랜잭션 슬롯이 사용 중이거나, 준비된 이벤트(staged event)가 있거나, 큐가 가득 찼거나, 엔드포인트가 정지하는 중이면 #PDCOMM_BACKPRESSURE를 반환합니다. 시스템 바이트가 소진되면 #PDCOMM_LIMIT_EXCEEDED를 반환합니다. #PDCOMM_POISONED를 반환할 수도 있습니다.