가이드 목록 | 이전: 개요 | 다음: Raw messaging 신뢰성
Socket pattern 선택¶
이 장의 계약 소유 문서 — Core socket 스펙 목차가 다룬다. 이 챕터는 통신 요구에 맞는 socket pattern을 고르는 기준을 비교한다.
Message 방향, peer 선택 방식과 framing 요구를 기준으로 pattern을 고른다.
| 요구 사항 | Pattern |
|---|---|
| 일대일 통신 | PAIR |
| Topic 배포 | PUB/SUB |
| Subscription을 관찰하는 proxy | XPUB/XSUB |
| 비동기 client와 worker | DEALER |
| 명시적인 peer routing | ROUTER |
| 외부 byte-stream client | STREAM |
공통 수신 방식¶
Raw socket은 일반적으로 poller와 whole-message receive를 함께 사용한다. Socket을
ZLINK_POLLIN으로 등록해 기다린 뒤 socket 종류에 맞는 receive 함수를 한 번 호출해
record 전체를 받는다.
- PAIR는
zlink_recv()를 사용한다. - SUB는 topic을 별도로 반환하는
zlink_subscribe()를 사용한다. - XPUB은 subscription 알림에
zlink_xpub_recv()를 사용한다. - DEALER는 일반 DATA에
zlink_recv()를 사용하고 request reply는zlink_completion_recv()로 받는다. - ROUTER는 peer와 불투명 reply token을 반환하는
zlink_router_recv()를 사용한다. - STREAM은 첫 bind 또는 connect 전에 RAW(
zlink_recv())와 PACKET(zlink_stream_recv_packet()) 중 하나를 고른다.
PAIR·DEALER는 zlink_recv(), ROUTER는 zlink_router_recv(), SUB·XSUB는
zlink_subscribe()가 record의 모든 part를 caller가 제공한 zlink_msg_t 배열에 채운다.
용량이 부족하면 record를 보존하고 ZLINK_RECV_BUFFER_TOO_SMALL을 반환한다. 계약은
Socket 공통이 소유한다.
Monitor handle과 generic timer도 같은 poller에 등록할 수 있다.
Routing id로 연결 종료¶
zlink_disconnect_rid()는 routing id가 일치하는 peer connection의 종료를 요청한다. Receive
metadata로 peer를 식별했지만 endpoint string을 저장하지 않았을 때 사용한다.