6.9.1 qmgr_ defer.c:销毁活动数据
来源:互联网 发布:apache的作用是什么 编辑:程序博客网 时间:2024/05/01 01:01
qmgr_ defer.c函数用来处理邮件的延迟发送。
当邮件被延迟,要进行两个方面的处理:邮件文件本身和邮件在内存中的“活动数据”(即“in-core”数据)。
虽然邮件被延迟了,但邮件文件本身依然在active队列中,这显然不是长久之计。active队列应该仅放置可以发送的邮件,再说active队列中的邮件数也是有限的,不能让延迟信件占据宝贵的空间。所以最终要将信件移出active队列,这通过qmgr_active.c中的一系列函数完成。
QMGR_QUEUE维持着两个QMGR_ENTRY_LIST链表:todo和busy,分别表示待发邮件和已经处于发信流程的邮件。虽然邮件被延迟了,但已经处于发信流程的邮件不会受影响。关键是要处理有待发送的邮件。因为每一次qmgr_job_entry_select的运行都将导致一个QMGR_ENTRY结构体从todo链表搬运到busy链表,而如果邮件被延迟,这样的搬运会变得毫无意义,所以要销毁延迟邮件的todo链表中的QMGR_ENTRY结构体。
qmgr_defer.c函数的主要作用就是根据是否存在retry模块分情况处理todo链表。虽然最终将销毁todo链表中的QMGR_ENTRY结构体,但由于retry模块是一个独立的进程,所以其销毁工作是并行开展的。否则将在原QMGR_QUEUE上实施销毁工作,这将影响qmgr模块的效率。无论是否存在retry模块,均将使用qmgr_entry_done函数完成销毁工作。“done”意味着对QMGR_ENTRY结构体进行最终的处理。
qmgr_defer.c循环所有QMGR_TRANSPORT,为每个QMGR_TRANSPORT调用qmgr_defer_todo函数:
for (queue = transport->queue_list.next;queue; queue = next)
- 6.9.1 qmgr_ defer.c:销毁活动数据
- android:活动销毁时保存数据
- Swift defer 函数完全退出时执行(常用于销毁数据)
- 销毁活动 --6
- 销毁一个活动
- 16.销毁一个活动
- android销毁活动的方法
- [Android新手学习笔记10]-活动Activity实践之启动、销毁、数据
- defer
- android返回键不销毁活动
- Android 之 activity活动(二、Toast,menu,活动销毁)
- 数据销毁方式探讨
- 开源:数据销毁
- 6.9.1.2 qmgr_entry_done:清理活动数据
- 【足迹C++primer】42、拷贝、赋值与销毁(1)
- [Android新手学习笔记04]-如何销毁一个活动
- Activity销毁时返回数据
- 1.销毁活动,监听活动,显示intent与隐式intent
- PP助手类应用探究
- 长按TextView实现复制功能
- Linux 冒号(:) --空指令
- 6.9 处理邮件的延迟
- Android中的 Multiple dex files define 编译错误引发的思考
- 6.9.1 qmgr_ defer.c:销毁活动数据
- Java是编译型语言还是解释型语言
- JSP 中文乱码问题
- android 裁切照片适应小米系统的实践补充
- 欢迎使用CSDN-markdown编辑器
- STM8常见问题
- JavaMail使用SMTP协议发送电子邮件
- W3C PHP学习笔记(基础)
- 浅析wifidog认证流程以及数据交互格式