PIPeer data transfers fixnsfer

git-svn-id: svn://db.shs.com.ru/pip@49 12ceb7fc-bf1f-11e4-8940-5bc7170c53b5
This commit is contained in:
2015-03-31 08:37:21 +00:00
parent 09faa9ae95
commit ca32c2695d
3 changed files with 16 additions and 1 deletions

View File

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

View File

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

View File

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