PIPeer important fix!
git-svn-id: svn://db.shs.com.ru/pip@110 12ceb7fc-bf1f-11e4-8940-5bc7170c53b5
This commit is contained in:
@@ -50,7 +50,7 @@ PIPeer::PeerData::~PeerData() {
|
||||
|
||||
|
||||
void PIPeer::PeerData::dtThread() {
|
||||
//piCoutObj << "send DT ...";
|
||||
// << "send DT ...";
|
||||
dt_out.send(data);
|
||||
//piCoutObj << "send DT done";
|
||||
}
|
||||
@@ -71,8 +71,9 @@ void PIPeer::PeerData::receivedPacket(uchar type, const PIByteArray & d) {
|
||||
dt = &dt_in;
|
||||
if (type == 2)
|
||||
dt = &dt_out;
|
||||
//piCoutObj << "DT received" << int(type) << d.size_s();
|
||||
//piCoutObj << "DT received" << int(type) << d.size_s() << "...";
|
||||
if (dt) dt->received(d);
|
||||
//piCoutObj << "DT received" << int(type) << d.size_s() << "done";
|
||||
}
|
||||
|
||||
|
||||
@@ -184,7 +185,6 @@ void PIPeer::initEths(PIStringList al) {
|
||||
ce->setDebug(false);
|
||||
ce->setName("__S__PIPeer_traffic_eth_rec_" + a);
|
||||
ce->setParameters(0);
|
||||
ce->setThreadSafe(true);
|
||||
bool ok = false;
|
||||
for (int p = _PIPEER_TRAFFIC_PORT_S; p < _PIPEER_TRAFFIC_PORT_E; ++p) {
|
||||
ce->setReadAddress(a, p);
|
||||
@@ -370,7 +370,7 @@ bool PIPeer::dataRead(uchar * readed, int size) {
|
||||
if (pi) {
|
||||
if (pi->isNeighbour()) {
|
||||
sba << int(6) << to << from << addr << time;
|
||||
//piCout << "ping from" << from << addr << ", send back to" << pi->name;
|
||||
//piCout << " ping from" << from << addr << ", send back to" << pi->name;
|
||||
send_mutex.lock();
|
||||
piForeachC (PeerInfo::Address & a, pi->addresses) {
|
||||
if (eth_send.send(a.address, sba))
|
||||
@@ -400,7 +400,7 @@ bool PIPeer::dataRead(uchar * readed, int size) {
|
||||
a.wait_ping = false;
|
||||
if (a.ping < 0) a.ping = ptime.toMilliseconds();
|
||||
else a.ping = 0.6 * a.ping + 0.4 * ptime.toMilliseconds();
|
||||
//piCout << "*** ping echo" << p.name << a.address << a.ping;
|
||||
//piCout << " ping echo" << p.name << a.address << a.ping;
|
||||
return true;
|
||||
}
|
||||
}
|
||||
@@ -445,7 +445,7 @@ bool PIPeer::dataRead(uchar * readed, int size) {
|
||||
cnt++;
|
||||
if (cnt > _PIPEER_MSG_TTL || from == dp->name) return true;
|
||||
sba << type << from << to << cnt << pba;
|
||||
//piCout << "translate packet" << from << "->" << to << ", ttl =" << cnt;
|
||||
piCout << "translate packet" << from << "->" << to << ", ttl =" << cnt;
|
||||
sendToNeighbour(dp, sba);
|
||||
}
|
||||
return true;
|
||||
@@ -526,6 +526,7 @@ bool PIPeer::mbcastRead(uchar * data, int size) {
|
||||
//piCoutObj << "rec sync " << rpeers.size_s() << " peers";
|
||||
peers_mutex.lock();
|
||||
if (!self_info.neighbours.contains(pi.name)) {
|
||||
//piCoutObj << "add new nei to me" << pi.name;
|
||||
self_info.addNeighbour(pi.name);
|
||||
PeerInfo * np = peers_map.value(pi.name);
|
||||
if (np) {
|
||||
@@ -569,6 +570,7 @@ bool PIPeer::mbcastRead(uchar * data, int size) {
|
||||
}
|
||||
if (exist || isRemoved(rpeer)) continue;
|
||||
rpeer.dist++;
|
||||
if (rpeer.name == pi.name) rpeer.dist = 0;
|
||||
rpeer.resetPing();
|
||||
addPeer(rpeer);
|
||||
ch = true;
|
||||
@@ -679,10 +681,10 @@ void PIPeer::sendPeerRemove(const PIString & peer) {
|
||||
void PIPeer::pingNeighbours() {
|
||||
PIByteArray ba, sba;
|
||||
ba << int(5) << self_info.name;
|
||||
//piCout << "pingNeighbours" << peers.size();
|
||||
//piCout << "*** pingNeighbours" << peers.size() << "...";
|
||||
piForeach (PeerInfo & p, peers) {
|
||||
//piCout << " ping neighbour" << p.name << p.ping();
|
||||
if (!p.isNeighbour()) continue;
|
||||
//piCout << " ping neighbour" << p.name << p.ping();
|
||||
send_mutex.lock();
|
||||
piForeach (PeerInfo::Address & a, p.addresses) {
|
||||
//piCout << " address" << a.address << a.wait_ping;
|
||||
@@ -700,6 +702,7 @@ void PIPeer::pingNeighbours() {
|
||||
}
|
||||
send_mutex.unlock();
|
||||
}
|
||||
//piCout << "*** pingNeighbours" << peers.size() << "done";
|
||||
}
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user