peer update
git-svn-id: svn://db.shs.com.ru/pip@31 12ceb7fc-bf1f-11e4-8940-5bc7170c53b5
This commit is contained in:
@@ -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) {
|
void PIPeer::sendPeerInfo(const PeerInfo & info) {
|
||||||
PIByteArray ba;
|
PIByteArray ba;
|
||||||
ba << int(1) << info.name << info;
|
ba << int(1) << info.name << info;
|
||||||
@@ -589,9 +607,7 @@ void PIPeer::syncPeers() {
|
|||||||
peers.remove(i);
|
peers.remove(i);
|
||||||
sendPeerRemove(pn);
|
sendPeerRemove(pn);
|
||||||
--i;
|
--i;
|
||||||
piForeach (PeerInfo & p, peers)
|
removeNeighbour(pn);
|
||||||
p.removeNeighbour(pn);
|
|
||||||
self_info.removeNeighbour(pn);
|
|
||||||
peerDisconnected(pn);
|
peerDisconnected(pn);
|
||||||
peerDisconnectedEvent(pn);
|
peerDisconnectedEvent(pn);
|
||||||
change = true;
|
change = true;
|
||||||
|
|||||||
@@ -136,7 +136,8 @@ private:
|
|||||||
EVENT_HANDLER2(void, timerEvent, void * , data, int, delim);
|
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 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 sendPeerInfo(const PeerInfo & info);
|
||||||
void sendPeerRemove(const PIString & peer);
|
void sendPeerRemove(const PIString & peer);
|
||||||
|
|||||||
Reference in New Issue
Block a user