peer update

git-svn-id: svn://db.shs.com.ru/pip@31 12ceb7fc-bf1f-11e4-8940-5bc7170c53b5
This commit is contained in:
2015-03-16 15:26:10 +00:00
parent dee3f36b95
commit 31fbfe65a4
2 changed files with 21 additions and 4 deletions

View File

@@ -535,6 +535,24 @@ void PIPeer::sendMBcast(const PIByteArray & ba) {
}
void PIPeer::removeNeighbour(const PIString & name) {
piForeach (PeerInfo & p, peers)
p.neighbours.removeOne(name);
self_info.removeNeighbour(name);
}
bool PIPeer::removePeer(const PIString & name) {
removeNeighbour(name);
for (int i = 0; i < peers.size_s(); ++i)
if (peers[i].name == name) {
peers.remove(i);
return true;
}
return false;
}
void PIPeer::sendPeerInfo(const PeerInfo & info) {
PIByteArray ba;
ba << int(1) << info.name << info;
@@ -589,9 +607,7 @@ void PIPeer::syncPeers() {
peers.remove(i);
sendPeerRemove(pn);
--i;
piForeach (PeerInfo & p, peers)
p.removeNeighbour(pn);
self_info.removeNeighbour(pn);
removeNeighbour(pn);
peerDisconnected(pn);
peerDisconnectedEvent(pn);
change = true;

View File

@@ -136,7 +136,8 @@ private:
EVENT_HANDLER2(void, timerEvent, void * , data, int, delim);
bool hasPeer(const PIString & name) {piForeachC (PeerInfo & i, peers) if (i.name == name) return true; return false;}
bool removePeer(const PIString & name) {for (uint i = 0; i < peers.size(); ++i) if (peers[i].name == name) {peers.remove(i); return true;} return false;}
bool removePeer(const PIString & name);
void removeNeighbour(const PIString & name);
void sendPeerInfo(const PeerInfo & info);
void sendPeerRemove(const PIString & peer);