back to polygonf

git-svn-id: svn://db.shs.com.ru/pip@105 12ceb7fc-bf1f-11e4-8940-5bc7170c53b5
This commit is contained in:
2015-04-17 07:19:36 +00:00
parent 022b76bc29
commit 353dbedf77
25 changed files with 143 additions and 106 deletions

View File

@@ -43,7 +43,9 @@ PIPeer::PeerData::PeerData(const PIString & n): PIObject(n) {
PIPeer::PeerData::~PeerData() {
t.stop();
dt_in.stop();
dt_out.stop();
t.stop(true);
}
@@ -55,6 +57,7 @@ void PIPeer::PeerData::dtThread() {
bool PIPeer::PeerData::send(const PIByteArray & d) {
piCout << "send ..." << t.isRunning();
if (t.isRunning()) return false;
data = d;
t.startOnce();
@@ -335,7 +338,7 @@ bool PIPeer::sendInternal(const PIString & to, const PIByteArray & data) {
}
PIByteArray ba;
ba << int(4) << self_info.name << to << int(0) << data;
//piCoutObj << "sendInternal" << to << data.size_s() << int(data.front());
piCoutObj << "sendInternal to" << to << data.size_s() << int(data.front());
if (!sendToNeighbour(dp, ba)) return false;
return true;
}
@@ -355,7 +358,7 @@ bool PIPeer::dataRead(uchar * readed, int size) {
PIString from, to;
ba >> type;
PIMutexLocker locker(eth_mutex);
//piCout << "[PIPeer \"" + name_ + "\"] Received packet" << type;
piCoutObj << "received data from" << from << "packet" << type;
if (type == 5) { // ping request
PIString addr;
PISystemTime time;
@@ -456,7 +459,7 @@ bool PIPeer::mbcastRead(uchar * data, int size) {
if (type <= 0 || type >= 4) return true;
PeerInfo pi;
ba >> pi.name;
//piCout << "read type" << type << "from" << pi.name;
piCoutObj << "received mb from" << pi.name << "packet" << type;
if (pi.name == self_info.name) return true;
PIMutexLocker locker(mc_mutex);
diag_s.received(size);
@@ -743,6 +746,11 @@ void PIPeer::checkNetwork() {
PIEthernet::InterfaceList ifaces = PIEthernet::interfaces();
if (prev_ifaces == ifaces) return;
prev_ifaces = ifaces;
reinit();
}
void PIPeer::reinit() {
PIMutexLocker mbl(mc_mutex);
PIMutexLocker ethl(eth_mutex);
PIMutexLocker pl(peers_mutex);