mosquitto 源代码中核心数据结构分析
一、struct mosquitto (在mosquitto_internel.h中定义)
struct mosquitto 这个结构体用来保存一个客户端连接的所有信息
这个结构体包含了很多成员,我们选取一些重要的成员,在代码中标注:
struct mosquitto {
#ifndef WIN32
int sock; /*服务器程序与该客户端连接通信所用的socket描述符*/
# ifndef WITH_BROKER
int sockpairR, sockpairW;
# endif
#else
SOCKET sock;
# ifndef WITH_BROKER
SOCKET sockpairR, sockpairW;
# endif
#endif
enum _mosquitto_protocol protocol;
char *address;/*该客户端的IP地址*/
char *id;/*该客户端登陆mosquitto程序时所提供的ID值,该值与其他的客户端不能重复*/
char *username;/*登录用户名*/
char *password;/*密码*/
uint16_t keepalive;/*该客户端需在此时间内向mosquitto服务器程序发送一条ping/pong消息*/
uint16_t last_mid;
enum mosquitto_client_state state;
time_t last_msg_in;/*last_msg_in和last_msg_out用于记录上次收发消息的时间*/
time_t last_msg