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

pdcomm_secs1_submit

함수

전송할 메시지 하나를 큐에 넣습니다.

PdcommStatus pdcomm_secs1_submit(PdcommSecs1Endpoint *endpoint, const PdcommSecs1Message *message, PdcommSecs1Token *out_token)

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

엔드포인트는 한 번에 메시지 하나만 보냅니다. 현재 메시지가 #PDCOMM_SECS1_EVENT_OUTBOUND_COMPLETE, #PDCOMM_SECS1_EVENT_OUTBOUND_FAILED 또는 장애를 만든 뒤에야 다음 제출을 받습니다. 본문은 접수할 때 복사되어 블록으로 나뉩니다. 성공은 접수만을 뜻하며, 전송은 pdcomm_secs1_poll()에서 이루어집니다.

매개변수

이름설명
endpoint시작된 엔드포인트입니다.
message보낼 메시지입니다. 필드 규칙은 ::PdcommSecs1Message를 참조합니다.
out_token제출 토큰을 받습니다. 먼저 0으로 초기화되므로 실패하면 항상 0입니다.

반환값

메시지를 접수했으면 #PDCOMM_OK를 반환합니다. message, out_token 또는 endpoint가 NULL이거나 메시지 필드가 유효하지 않으면 #PDCOMM_INVALID_ARGUMENT를 반환합니다. 준비된 이벤트(staged event)를 먼저 가져와야 하거나 다른 메시지를 아직 보내는 중이면 #PDCOMM_BACKPRESSURE를 반환합니다. 엔드포인트가 시작되지 않았거나 장애 상태이거나, 다른 스레드에서의 호출, 동시 호출, 재진입 호출이면 #PDCOMM_INVALID_STATE를 반환합니다. 본문이 max_outbound_body_bytes, max_body_bytes, max_outbound_blocks 또는 max_blocks를 넘거나, 이 세대의 제출 번호가 소진되면 #PDCOMM_LIMIT_EXCEEDED를 반환합니다. 본문이나 블록을 복사할 수 없으면 #PDCOMM_ALLOCATION_FAILED를 반환합니다. 엔드포인트가 오염(poisoned) 상태이면 #PDCOMM_POISONED를 반환합니다.

참고

  • 소유권: 메시지와 본문은 호출자가 계속 소유하며, 호출이 반환되면 해제해도 됩니다.
  • 스레드 안전성: 생성한 스레드에서만 호출합니다.