git-svn-id: svn://db.shs.com.ru/pip@21 12ceb7fc-bf1f-11e4-8940-5bc7170c53b5
This commit is contained in:
2015-03-12 14:06:31 +00:00
parent fdb48aba64
commit 978e732d70

View File

@@ -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;