| 374 | //! Wrapper around Index::...::erase that keeps m_peerinfo up to date. |
| 375 | template<typename Tag> |
| 376 | Iter<Tag> Erase(Iter<Tag> it) |
| 377 | { |
| 378 | auto peerit = m_peerinfo.find(it->m_peer); |
| 379 | peerit->second.m_completed -= it->GetState() == State::COMPLETED; |
| 380 | peerit->second.m_requested -= it->GetState() == State::REQUESTED; |
| 381 | if (--peerit->second.m_total == 0) m_peerinfo.erase(peerit); |
| 382 | return m_index.get<Tag>().erase(it); |
| 383 | } |
| 384 | |
| 385 | //! Wrapper around Index::...::modify that keeps m_peerinfo up to date. |
| 386 | template<typename Tag, typename Modifier> |