6.9.1.2 qmgr_entry_done:清理活动数据
2016-04-07 15:35
316 查看
qmgr_entry_done该函数首先将QMGR_ENTRY结构体从相关的链表中取下,更新引用计数:
一旦所有引用计数更新完毕,销毁QMGR_ENTRY结构体:
至此延迟信件的todoQMGR_ENTRY结构体被销毁完毕,将没有“活动数据”可以发送信件,但邮件原信依然在active队列中。一旦QMGR_MESSAGE的所有引用计数处理完毕,使用qmgr_active_done函数处理该原信,这里的“done”同样意味着对activ队列中的信件做最后的处理:
else if (which== QMGR_QUEUE_TODO) { QMGR_LIST_UNLINK(peer->entry_list,QMGR_ENTRY *, entry, peer_peers); job->selected_entries++; QMGR_LIST_UNLINK(queue->todo,QMGR_ENTRY *, entry, queue_peers); queue->todo_refcount--; }
一旦所有引用计数更新完毕,销毁QMGR_ENTRY结构体:
/* * Decrease the in-core recipient counts and free the recipient list and * the structure itself. */ job->rcpt_count -= entry->rcpt_list.len; message->rcpt_count -= entry->rcpt_list.len; qmgr_recipient_count -= entry->rcpt_list.len; recipient_list_free(&entry->rcpt_list); myfree((void*) entry);
至此延迟信件的todoQMGR_ENTRY结构体被销毁完毕,将没有“活动数据”可以发送信件,但邮件原信依然在active队列中。一旦QMGR_MESSAGE的所有引用计数处理完毕,使用qmgr_active_done函数处理该原信,这里的“done”同样意味着对activ队列中的信件做最后的处理:
/* *Update the in-core message reference count. When the in-core message * structure has no more references, dispose of the message. */ message->refcount--; if (message->refcount == 0) qmgr_active_done(message);
相关文章推荐
- displacement map置换贴图
- 使用Maven创建Web项目
- Qt基础: 信号和槽
- 存储过程自学
- logstash邮件报警功能实现
- magento 计划任务
- 面试题76:单链表的归并排序
- 菜鸟成长记-打开PDF文件,可以左右滑动
- HashMap内部实现及源码分析
- swift 之actionSheet 使用
- Nyoj 修路方案(次小生成树)
- javasScript正则表达式验证密码(必须含数字字符特殊符号,长度4-16位之间)
- POJ 1015 Jury Compromise【DP】
- meaurespec的初步认识
- POJ 1015 Jury Compromise【DP】
- 利用请求头Referer防止盗链
- Unity3D研究院之异步加载游戏场景与异步加载游戏资源进度条(三十一)
- JavaScript字符串转数字
- centos6.7 安装redis 3.0.7
- 正则表达式