peer
git-svn-id: svn://db.shs.com.ru/pip@21 12ceb7fc-bf1f-11e4-8940-5bc7170c53b5
This commit is contained in:
@@ -235,7 +235,7 @@ bool PIPeer::send(const PIString & to, const void * data, int size) {
|
|||||||
ba << int(4) << self_info.name << to << int(0) << size;
|
ba << int(4) << self_info.name << to << int(0) << size;
|
||||||
PIByteArray fmsg(data, size), cmsg;
|
PIByteArray fmsg(data, size), cmsg;
|
||||||
int msg_count = (size - 1) / _PIPEER_MSG_SIZE + 1;
|
int msg_count = (size - 1) / _PIPEER_MSG_SIZE + 1;
|
||||||
piCout << "[PIPeer] send" << size << "bytes in" << msg_count << "packets ...";
|
//piCout << "[PIPeer] send" << size << "bytes in" << msg_count << "packets ...";
|
||||||
for (int i = 0; i < msg_count; ++i) {
|
for (int i = 0; i < msg_count; ++i) {
|
||||||
int csize = (i == msg_count - 1) ? ((size - 1) % _PIPEER_MSG_SIZE + 1) : _PIPEER_MSG_SIZE;
|
int csize = (i == msg_count - 1) ? ((size - 1) % _PIPEER_MSG_SIZE + 1) : _PIPEER_MSG_SIZE;
|
||||||
cmsg = ba;
|
cmsg = ba;
|
||||||
@@ -243,7 +243,7 @@ bool PIPeer::send(const PIString & to, const void * data, int size) {
|
|||||||
cmsg.append(fmsg.data(i * _PIPEER_MSG_SIZE), csize);
|
cmsg.append(fmsg.data(i * _PIPEER_MSG_SIZE), csize);
|
||||||
if (!sendToNeighbour(dp, cmsg)) return false;
|
if (!sendToNeighbour(dp, cmsg)) return false;
|
||||||
}
|
}
|
||||||
piCout << "[PIPeer] send" << size << "bytes ok";
|
//piCout << "[PIPeer] send" << size << "bytes ok";
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -279,17 +279,19 @@ bool PIPeer::dataRead(uchar * readed, int size) {
|
|||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
// send ping back
|
if (from == self_info.name) { // send ping back
|
||||||
piForeachC (PeerInfo & p, peers) {
|
const PeerInfo * pi = getPeerByName(to);
|
||||||
if (!p.isNeighbour()) continue;
|
if (pi) {
|
||||||
if (p.name != to) continue;
|
if (pi->isNeighbour()) {
|
||||||
sba = PIByteArray(readed, size);
|
sba = PIByteArray(readed, size);
|
||||||
//piCout << "ping from" << to << addr << ", send back to" << p.name;
|
//piCout << "ping from" << to << addr << ", send back to" << p.name;
|
||||||
piForeachC (PeerInfo::Address & a, p.addresses) {
|
piForeachC (PeerInfo::Address & a, pi->addresses) {
|
||||||
if (eth_send.send(a.address, sba))
|
if (eth_send.send(a.address, sba))
|
||||||
diag_s.received(sba.size_s());
|
diag_s.received(sba.size_s());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return true;
|
||||||
}
|
}
|
||||||
return true;
|
|
||||||
}
|
}
|
||||||
//PIEthernet * eth = (PIEthernet*)emitter();
|
//PIEthernet * eth = (PIEthernet*)emitter();
|
||||||
//()->send();
|
//()->send();
|
||||||
@@ -467,7 +469,7 @@ bool PIPeer::mbcastRead(uchar * data, int size) {
|
|||||||
bool PIPeer::sendToNeighbour(PIPeer::PeerInfo * peer, const PIByteArray & ba) {
|
bool PIPeer::sendToNeighbour(PIPeer::PeerInfo * peer, const PIByteArray & ba) {
|
||||||
//if (peer->_neth == 0) return false;
|
//if (peer->_neth == 0) return false;
|
||||||
PIString addr = peer->fastestAddress();
|
PIString addr = peer->fastestAddress();
|
||||||
piCout << "[PIPeer] sendToNeighbour" << peer->name << addr << ba.size_s() << "bytes ...";
|
//piCout << "[PIPeer] sendToNeighbour" << peer->name << addr << ba.size_s() << "bytes ...";
|
||||||
//bool ok = peer->_neth->send(peer->_naddress, ba.data(), ba.size_s());
|
//bool ok = peer->_neth->send(peer->_naddress, ba.data(), ba.size_s());
|
||||||
bool ok = eth_send.send(addr, ba);
|
bool ok = eth_send.send(addr, ba);
|
||||||
//piCout << "[PIPeer] sendToNeighbour" << (ok ? "ok" : "fail");
|
//piCout << "[PIPeer] sendToNeighbour" << (ok ? "ok" : "fail");
|
||||||
@@ -522,7 +524,7 @@ void PIPeer::pingNeighbours() {
|
|||||||
ba << int(5) << self_info.name;
|
ba << int(5) << self_info.name;
|
||||||
//piCout << "pingNeighbours" << peers.size();
|
//piCout << "pingNeighbours" << peers.size();
|
||||||
piForeach (PeerInfo & p, peers) {
|
piForeach (PeerInfo & p, peers) {
|
||||||
piCout << " ping neighbour" << p.name << p.ping();
|
//piCout << " ping neighbour" << p.name << p.ping();
|
||||||
if (!p.isNeighbour()) continue;
|
if (!p.isNeighbour()) continue;
|
||||||
piForeach (PeerInfo::Address & a, p.addresses) {
|
piForeach (PeerInfo::Address & a, p.addresses) {
|
||||||
//piCout << " address" << a.address << a.wait_ping;
|
//piCout << " address" << a.address << a.wait_ping;
|
||||||
|
|||||||
Reference in New Issue
Block a user