SimpleTorrent
待办事项列表
全局 bt_handler (struct MetaInfo *mi, int efd)
通过 accept 建立连接并监听连接套接字的 EPOLLIN 事件,加入 MetaInfo::wait_peers 队列。注意设置 WaitPeer::direction
全局 finish_handshake (struct MetaInfo *mi, int sfd)
要区分是对方回复的握手消息还是对方主动发来的握手消息
全局 handle_msg (struct MetaInfo *mi, struct Peer *peer, struct PeerMsg *msg)

根据 bitfield 增加 piece 持有者数量

根据 have 增加 piece 持有者数量

处理 REQUEST 消息

处理 CANCEL 消息

PieceInfo
子分片使用何种数据结构比较合理?
全局 select_piece (struct MetaInfo *mi, struct PeerMsg *msg)
应用优化策略:最少优先
WaitPeer
bt_handler()handle_peer_list() 中正确地对 direction 进行赋值,为 finish_handshake() 服务