wifi_auth_manager
由于代码量较大,这里分为两个部分来讲解。这一部分重点简介前面关于List双向链表的相关函数,后一篇重点讲解整个剩下的关于authmanager顶层函数的封装与功能
知识总结
- common_info_manager.h中封装的宏
循环一个链表直到pos指针指到head
多处的链表操作时都用到了这个循环
总体概述
前一部分的函数块跟bus_manager.c中的函数类似都是关于双向链表的操作
代码详解
由于wifi_auth_manager.h并没有特别新奇的地方,所以这里并不浪费篇幅讲解,有需要的可以自己查看源码
wifi_auth_manager.c
- 将aconn指针所指的数据块上链的函数
我们可以注意到数据插入前,都会有一系列检查——这也是封装函数的用处之一——检查异常
- 通过唯一标识符fd在List中寻找相应的连接
- 通过另外的参数IP和onlinestate确定node.aconn
- 删除结点,结点下List的函数
- 初始化和删除的函数(没什么多说的)
- 三个连着的嵌套的用于关闭会话的函数
void ProcessConnectEvent(int fd, const char *ip)
void CloseConn(const AuthConn *conn)
void AuthConnClose(const AuthConn *conn)
具体的流程如下:
首先通过传入的fd找到指定的aconn非空时,调用函数CloseConn进行会话的关闭,而在函数CloseConn中通过conn中的fd将密钥链上会话对应的密钥块删除,再调用AuthConnClose将其关闭,调用DelAuthConnNode函数将其从会话链表中删除释放;如果没有找到对应的aconn,则将参数中传入的IP赋给aconn.deviceIp,新建一个aconn,使用函数AddAuthConnToList将其上链。
欢迎点赞评论关注!