diff --git a/src/io/pipeer.cpp b/src/io/pipeer.cpp index d53a5a30..4caaaec0 100755 --- a/src/io/pipeer.cpp +++ b/src/io/pipeer.cpp @@ -19,7 +19,7 @@ #include "pipeer.h" -#define _PIPEER_MSG_SIZE 8000 +#define _PIPEER_MSG_SIZE 4000 #define _PIPEER_MSG_TTL 100 #define _PIPEER_MULTICAST_TTL 4 #define _PIPEER_MULTICAST_IP "232.13.3.12" @@ -42,6 +42,11 @@ PIPeer::PeerData::PeerData(const PIString & n): PIObject(n) { } +PIPeer::PeerData::~PeerData() { + t.stop(); +} + + void PIPeer::PeerData::dtThread() { piCoutObj << "send DT ..."; dt_out.send(data); @@ -68,6 +73,11 @@ void PIPeer::PeerData::receivedPacket(uchar type, const PIByteArray & d) { } +void PIPeer::PeerData::setDist(int dist) { + dt_in.setTimeout(10 * dist); +} + + PIPeer::PeerInfo::Address::Address(const PIString & a, const PIString & m): address(a), netmask(m) { @@ -693,6 +703,8 @@ void PIPeer::syncPeers() { cp.sync = 0; else cp.sync++; + if (cp._data) + cp._data->setDist(cp.dist + 1); cp.was_update = false; } pingNeighbours(); diff --git a/src/io/pipeer.h b/src/io/pipeer.h index ff52b275..6eeaf760 100755 --- a/src/io/pipeer.h +++ b/src/io/pipeer.h @@ -36,6 +36,7 @@ private: PIOBJECT_SUBCLASS(PeerData, PIObject) public: PeerData(const PIString & n); + ~PeerData(); EVENT_HANDLER1(void, dtSendRequestIn, PIByteArray &, data) {data.push_front(uchar(2)); sendRequest(name(), data);} EVENT_HANDLER1(void, dtSendRequestOut, PIByteArray &, data) {data.push_front(uchar(3)); sendRequest(name(), data);} EVENT_HANDLER1(void, dtReceiveFinishedIn, bool, ok) {if (ok) received(name(), dt_in.data());} @@ -45,6 +46,7 @@ private: EVENT2(sendRequest, const PIString &, to, const PIByteArray &, data); bool send(const PIByteArray & d); void receivedPacket(uchar type, const PIByteArray & d); + void setDist(int dist); PIByteArray data; PIThread t; PIDataTransfer dt_in, dt_out; diff --git a/utils/system_daemon/daemon.cpp b/utils/system_daemon/daemon.cpp index 4c1dc9b2..5cc776b9 100644 --- a/utils/system_daemon/daemon.cpp +++ b/utils/system_daemon/daemon.cpp @@ -283,6 +283,7 @@ void Daemon::dataReceived(const PIString & from, const PIByteArray & data) { piForeach (PIFile::FileInfo & f, fil) f.path = f.name(); rba << int(ReplyChangeDir) << r->dir_my.absolutePath() << fil; + piCout << "cd to" << dir << ", abs =" << r->dir_my.absolutePath(); } break; case ReplyHostInfo: