From: <sv...@ww...> - 2004-12-18 10:50:41
|
Author: mkrose Date: 2004-12-18 02:50:33 -0800 (Sat, 18 Dec 2004) New Revision: 1403 Modified: trunk/CSP/SimNet/NetworkInterface.cpp trunk/CSP/SimNet/NetworkInterface.h Log: Some internal reshuffling/renaming methods and variables related to disconnected peers. Browse at: https://www.zerobar.net/viewcvs/viewcvs.cgi?view=rev&rev=1403 Modified: trunk/CSP/SimNet/NetworkInterface.cpp =================================================================== --- trunk/CSP/SimNet/NetworkInterface.cpp 2004-12-18 10:41:09 UTC (rev 1402) +++ trunk/CSP/SimNet/NetworkInterface.cpp 2004-12-18 10:50:33 UTC (rev 1403) @@ -259,18 +259,13 @@ } bool NetworkInterface::handleDeadPeer(PeerInfo *peer) { - m_DeadPeerQueue.push_back(peer->getId()); - // if noone is cleaning the queue, do it for them. - if (m_DeadPeerQueue.size() > 100) { - m_DeadPeerQueue.pop_front(); - } return true; } PeerId NetworkInterface::nextDisconnectedPeerId() { - if (m_DeadPeerQueue.empty()) return 0; - PeerId next = m_DeadPeerQueue.front(); - m_DeadPeerQueue.pop_front(); + if (m_DisconnectedPeerQueue.empty()) return 0; + PeerId next = m_DisconnectedPeerQueue.front(); + m_DisconnectedPeerQueue.pop_front(); return next; } @@ -758,12 +753,20 @@ SIMNET_LOG(PEER, INFO, "remove peer " << id); PeerInfo *peer = getPeer(id); assert(peer && peer->isActive()); + notifyPeerDisconnect(id); ConnectionPoint point = peer->getNode().getConnectionPoint(); m_IpPeerMap.erase(point); peer->disable(); m_ActivePeers->removePeer(peer); } +void NetworkInterface::notifyPeerDisconnect(PeerId id) { + m_DisconnectedPeerQueue.push_back(id); + // if noone is cleaning the queue, do it for them. + if (m_DisconnectedPeerQueue.size() > 100) { + m_DisconnectedPeerQueue.pop_front(); + } +} void NetworkInterface::setServer(NetworkNode const &server_node, double incoming, double outgoing) { assert(m_Initialized && m_LocalId == 0); Modified: trunk/CSP/SimNet/NetworkInterface.h =================================================================== --- trunk/CSP/SimNet/NetworkInterface.h 2004-12-18 10:41:09 UTC (rev 1402) +++ trunk/CSP/SimNet/NetworkInterface.h 2004-12-18 10:50:33 UTC (rev 1403) @@ -222,8 +222,12 @@ */ bool handleDeadPeer(PeerInfo *peer); + /** Add a peer to the disconnected peer queue, accessible via nextDisconnectedPeerId(). + */ + void notifyPeerDisconnect(PeerId id); + // Queue of dead peers. See nextDisconnectedPeerId(). - std::deque<PeerId> m_DeadPeerQueue; + std::deque<PeerId> m_DisconnectedPeerQueue; /** Called by ActivePeerList to resend a reliable packet that has not been * confirmed by the destination host. @@ -378,9 +382,9 @@ PeerInfo const *getPeer(PeerId id) const; /** Returns true if one or more peers have disconnected, but have - * not yet been processed by nextDeadPeer. + * not yet been processed by nextDisconnectedPeer. */ - inline bool hasDisconnectedPeers() const { return !m_DeadPeerQueue.empty(); } + inline bool hasDisconnectedPeers() const { return !m_DisconnectedPeerQueue.empty(); } /** Get the id of the next peer that has disconnected, or zero if * no disconnection notifications are pending. This routine can |