MQTT Broker Mosquitto(二)数据结构

本文深入探讨了Mosquitto MQTT Broker中的重要数据结构,包括mosquitto_db、mosquitto、mosquitto_msg_store、_mosquitto_subhier和mosquitto_client_msg。mosquitto_db作为核心结构体,维护客户端信息和消息存储。mosquitto结构体用于表示客户端连接,而mosquitto_msg_store用于存储消息。_mosquitto_subhier构建了主题树,mosquitto_client_msg则管理客户端的消息队列和交互状态。这些数据结构在Broker处理消息传递和存储中起到关键作用。
摘要由CSDN通过智能技术生成

本文主要介绍一下Mosquitto中用到的比较重要的数据结构,为之后的流程处理讲解奠定基础。为了清晰,结构体展示时只保留重要成员。

一、mosquitto_db

struct mosquitto_db{

    /*主题树的根结点*/
    struct _mosquitto_subhier subs;

    /*id:context映射的Hash表首节点,通过该成员去遍历Hash表*/
    struct mosquitto *contexts_by_id;

    /*sock:context映射的Hash表首节点,通过该成员去遍历Hash表*/
    struct mosquitto *contexts_by_sock;

    /*存储消息的链表*/
    struct mosquitto_msg_store *msg_store;

    /*服务器的配置*/
    struct mqtt3_config *config;    

    /*由于断开连接等需要释放的context存放的链表*/
    struct mosquitto *ll_for_free;
};

mosquitto_db可谓是mosquitto最核心的结构体,没有之一。它维护着服务器配置主题树客户端句柄接收的消息列表。其中为了查找方便,建立了通过客户端id来查找客户端句柄的Hash表和通过客户端socket连接描述符查找客户端句柄的Hash表;将连接断开的客户端句柄先存放在ll_for_free链表中,待到合适时统一释放。

二、mosquitto

mosquitto 是客户端连接句柄,包含着客户端相关信息。

struct mosquitto{

    /*socket连接描述符*/
    mosq_sock_t sock;

    /*客户端使用的协议版本号*/
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值