From ca32c2695d99868c72438b95ec09850b5dfb76f6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=9F=D0=B5=D0=BB=D0=B8=D0=BF=D0=B5=D0=BD=D0=BA=D0=BE=20?= =?UTF-8?q?=D0=98=D0=B2=D0=B0=D0=BD?= Date: Tue, 31 Mar 2015 08:37:21 +0000 Subject: [PATCH] PIPeer data transfers fixnsfer git-svn-id: svn://db.shs.com.ru/pip@49 12ceb7fc-bf1f-11e4-8940-5bc7170c53b5 --- src/io/pipeer.cpp | 14 +++++++++++++- src/io/pipeer.h | 2 ++ utils/system_daemon/daemon.cpp | 1 + 3 files changed, 16 insertions(+), 1 deletion(-) 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: