emule(电驴/电骡)源码分析
void CUpDownClient::ConnectionEstablished():
emule中, CUpDownClient 代表了一个peer。一个peer会被放置到各种队列中去。比如,还未连接的peer被放入到待连接队列中。其它队列中保存的是peer的指针,这样可以节省内存。
函数ConnectionEstablished()其意思很明显:连接建立后调用。
一个peer连接后,需要做什么呢?
1 从connecting队列中删除。
2 如果本emule还未获取到自己的公网IP,则通过这个peer获取自己的公网IP。
3 更新peer在kad网络中的状态。
4 如果正在与这个peer聊天,则更新这个peer的聊天状态。
5 更新download状态。 如果正等待从这个peer上download数据,则马是上向这个peer发出下载请求。
6 更新reask状态。暂时不知道reask是针对什么情况出现的。
7 更新upload状态。如果处于等待向这个peer上传数据的状态(收到了这个peer的下载请求,这个peer会位于上传队列中),则马上向这个peer 发出同意上传请求的回复。
8 如果先前向这个peer发出文件列表请求的命令(可能通过pop menu),则发出请求paket。
9 如果有很多paket待发给这个peer,则全部发出去。
posted on 2010-09-28 07:05 android开发实例 阅读(1274) 评论(0) 编辑 收藏 举报