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

pdcomm_gem_spool_sync

함수

스풀을 현재 통신 상태와 동기화합니다.

PdcommStatus pdcomm_gem_spool_sync(PdcommTcpEndpoint *endpoint, uint64_t now, PdcommGemSpoolWriteInfo *info)

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

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를 반환합니다.