2009年12月20日星期日

P2Psim分析笔记(3)-taskmain函数流程

    在上篇里,我们知道P2PSim是基于libtask的,libtask的第一个任务是通过taskmain函数来启动的。换而言之,taskmain是p2psim的主程序。下面的图里面给出了taskmain的主要流程。



    根据图示,taskmain先把-开头的参数解析出来,然后让Node类去解析protocol_file,然后让Topology类去负责解析topology_file。Topology在解析topology_file后调用Network类生出了第一个并发任务,这个任务负责根据topology建立peer的vector。随后调用了yield放弃cup让Network任务去充分处理topology对应的Peer生成工作。
    然后,taskmain让EventGenerator类根据event_file生成了对应的事件发生器(EventGenerator)的对象,这里采用了工厂模式,根据配置文件生成对应的事件发生器。同时还生成对应的观察者对象。 生成的发生器对象也是一个从Threaded派生的家伙,因此此刻第三个并发任务也开始运行了。
    最后,taskmain遍历了所有的node对象,让他们完成初始化。随后完成所有工作退出。

没有评论:

发表评论