Skip to content

Latest commit

 

History

History
146 lines (100 loc) · 5.62 KB

File metadata and controls

146 lines (100 loc) · 5.62 KB

ZMQ源码分析 - socket

类结构

classDiagram
	i_poll_events <|-- socket_base_t
	own_t <|-- socket_base_t
	array_item_t <|-- socket_base_t
	i_pipe_events <|-- socket_base_t
	
	socket_base_t <|-- channel_t
	socket_base_t <|-- client_t
	socket_base_t <|-- dealer_t
	socket_base_t <|-- dgram_t
	socket_base_t <|-- dish_t
	socket_base_t <|-- gather_t
	socket_base_t <|-- pull_t
	socket_base_t <|-- push_t
	socket_base_t <|-- radio_t
	socket_base_t <|-- server_t
	socket_base_t <|-- dish_t
	socket_base_t <|-- stream_t
	socket_base_t <|-- xpub_t
	socket_base_t <|-- xsub_t
Loading

通讯协议

zmq支持以下通讯方式:

  • tcp 使用TCP的单播传输。
  • inpro 线程间通信。
  • ipc 本地进程间通信。
  • pgm 基于IP网络协议的可靠多路广播(只可用于pub和sub类型套接字)。
  • epgm 基于IP网络协议的可靠多路广播(只可用于pub和sub类型套接字)。
  • vmci 虚拟机通信接口。

socket分类

socket 组合 说明
ZMQ_PAIR ZMQ_PAIR + ZMQ_PAIR:线程间通信 套接字对
ZMQ_PUB ZMQ_PUB + ZMQ_SUB:经典发布订阅模型
ZMQ_PUB + ZMQ_XSUB:高级发布模型
发布套接字
ZMQ_SUB ZMQ_SUB + ZMQ_PUB:经典发布订阅模型
ZMQ_SUB + ZMQ_XPUB:高级订阅模型
订阅套接字
ZMQ_XPUB ZMQ_XPUB + ZMQ_XSUB:高级发布订阅模型
ZMQ_SUB + ZMQ_XPUB:高级订阅模型
高级订阅套接字(用于转发套接字发布的消息)
ZMQ_XSUB ZMQ_XPUB + ZMQ_XSUB:高级发布订阅模型
ZMQ_PUB + ZMQ_XSUB:高级发布模型
高级发布套接字(用于接收套接字发布的消息)
ZMQ_REQ ZMQ_REQ + ZMQ_REP:经典请求响应模型 请求套接字(一问一答)
ZMQ_REP ZMQ_REQ + ZMQ_REP:经典请求响应模型 响应套接字(一问一答)
ZMQ_XREQ ZMQ_XREQ + ZMQ_XREP:高级请求响应模型
ZMQ_XREP ZMQ_XREQ + ZMQ_XREP:高级请求响应模型
ZMQ_PUSH ZMQ_PUSH + ZMQ_PULL:经典推/拉模型 推送套接字
ZMQ_PULL ZMQ_PUSH + ZMQ_PULL:经典推/拉模型 拉取套接字
ZMQ_STREAM
ZMQ_SERVER
ZMQ_CLIENT
ZMQ_GATHER
ZMQ_SCATTER
ZMQ_DGRAM
ZMQ_PEER
ZMQ_CHANNEL

socket_base_t

建立连接

graph TD
	zmq::socket_base_t::connect --> zmq::socket_base_t::connect_internal --> zmq::session_base_t::create    
Loading

触发连接事件:

graph TD
	zmq::poller_base_t::execute_timers --> zmq::stream_connecter_base_t::timer_event --> zmq::session_base_t::start_connecting --> connect   
Loading

断线重连

TODO

消息触发模式

TODO

释放与销毁

TODO

发送多帧

TODO

多次发送

TODO

pub_t

TODO

xpub_t

TODO

参考