pdcomm_tcp_stop
함수
엔드포인트를 정지하고 정상 종료(graceful close)를 시작합니다.
PdcommStatus pdcomm_tcp_stop(PdcommTcpEndpoint *endpoint)SELECTED 상태에서는 엔드포인트가 Separate.req를 큐에 넣습니다. 열린 모든 트랜잭션은 #PDCOMM_TCP_CANCELLED로 실패하고, 응답하지 않은 수신 1차 메시지는 버려지며, 상태는 #PDCOMM_TCP_STOPPED가 됩니다. pdcomm_tcp_poll()이 큐에 있는 프레임을 쓰는 동안 연결은 최대 PdcommTcpOptions::shutdown_timeout_ms 동안 열려 있습니다. PdcommTcpState::closed가 1이 될 때까지 계속 폴링하고 이벤트를 비웁니다. 정지하는 중에 다시 호출해도 아무 효과가 없습니다.
매개변수
| 이름 | 설명 |
|---|---|
endpoint | 유효한 엔드포인트입니다. |
반환값
성공하면 #PDCOMM_OK를 반환하며, 한 번도 시작하지 않은 엔드포인트도 포함합니다. endpoint가 NULL이면 #PDCOMM_INVALID_ARGUMENT를 반환합니다. 준비된 이벤트(staged event)가 있거나(pdcomm_tcp_next_event() 참고) 이벤트 큐가 종료 이벤트를 담을 수 없으면 #PDCOMM_BACKPRESSURE를 반환합니다. #PDCOMM_POISONED를 반환할 수도 있습니다.
참고
- GEM 역할이 구성되어 있으면 이 호출은 GEM 상태도 갱신합니다.