back to polygonf
git-svn-id: svn://db.shs.com.ru/pip@105 12ceb7fc-bf1f-11e4-8940-5bc7170c53b5
This commit is contained in:
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user