pdcomm_gem_spool_sync
함수
스풀을 현재 통신 상태와 동기화합니다.
PdcommStatus pdcomm_gem_spool_sync(PdcommTcpEndpoint *endpoint, uint64_t now, PdcommGemSpoolWriteInfo *info)TCP와 GEM 이벤트를 처리한 뒤, 그리고 연결이 바뀌었을 수 있을 때마다 호출합니다. 이 호출은 엔드포인트가 Selected 상태이고 GEM이 Communicating 상태인지 관찰하고, 현재 HSMS 세대와 선택(selection)을 기록합니다.
- 통신이 연결되어 있으면 스풀은 현재 세대를 추적합니다. 새 세대가 되면 이전 전송 실행은 끝납니다.
- 통신이 끊겨 있으면 활성화되어 있지만 동작 중이 아닌 스풀을 동작 상태로 만듭니다(#PDCOMM_GEM_SPOOL_ACTIVATED). 큐가 비어 있으면 통계를 초기화하고
start_time이now가 됩니다. 이전 활성화가 설치 전에 실패했으면 다시 시도합니다.
동기화는 전송을 시작하지 않습니다. 캡처, 송신, 응답, 전달 호출에는 현재 유효한 성공한 동기화가 필요합니다.
매개변수
| 이름 | 설명 |
|---|---|
endpoint | 장비 스풀이 있는 엔드포인트입니다. |
now | 활성화에 기록할 애플리케이션 타임스탬프입니다. |
info | 활성화가 있었으면 그 결과를 받습니다. NULL이 아니어야 합니다. |
반환값
성공하면 #PDCOMM_OK를 반환합니다. 활성화를 설치했지만 디렉터리 동기화가 확인되지 않았으면 #PDCOMM_SPOOL_UNCONFIRMED를 반환합니다(스풀은 여전히 동기화된 상태입니다). info 또는 endpoint가 NULL이거나 info가 너무 작으면 #PDCOMM_INVALID_ARGUMENT를 반환합니다. 장비 스풀이 구성되지 않았으면 #PDCOMM_INVALID_STATE를 반환합니다. 준비된 TCP 이벤트(staged event)가 대기 중이면 #PDCOMM_BACKPRESSURE를 반환합니다. 활성화를 설치하지 못했으면 #PDCOMM_IO_ERROR 같은 영속화 오류를 반환하며 스풀은 동기화되지 않은 상태로 남습니다. 패닉(panic)을 격리한 뒤에는 #PDCOMM_POISONED를 반환합니다.