TimerPool fixoutManipulator

git-svn-id: svn://db.shs.com.ru/pip@72 12ceb7fc-bf1f-11e4-8940-5bc7170c53b5
This commit is contained in:
2015-04-07 13:17:05 +00:00
parent ac88ca0e7f
commit 75eb413856
8 changed files with 175 additions and 50 deletions

View File

@@ -4,6 +4,18 @@
extern PIScreen screen;
Daemon::Remote::Remote(const PIString & n): PIThread() {
setName(n);
ft.setName(n);
CONNECTU(&ft, sendRequest, this, ftSendRequest)
CONNECTU(&ft, receiveFinished, this, ftReceived)
dir_my = PIDir::current();
}
Daemon::Daemon(): PIPeer("_pisd_" + PISystemInfo::instance()->hostname + "_" + PIString(rand() % 100)), fm(this) {
setName("Daemon");
timer.setName("__S__Daemon_timer");
@@ -228,8 +240,8 @@ void Daemon::peerConnected(const PIString & name) {
mode = 2;
conn_name = name;*/
Remote * r = new Remote(name);
CONNECTU(&(r->dt), sendRequest, this, dtSendRequest)
CONNECTU(&(r->dt), receiveFinished, this, dtReceived)
CONNECTU(&(r->ft), sendRequest, this, ftSendRequest)
CONNECTU(&(r->ft), receiveFinished, this, ftReceived)
remotes.insert(name, r);
}
@@ -244,7 +256,7 @@ void Daemon::peerDisconnected(const PIString & name) {
}
void Daemon::dtSendRequest(PIByteArray & data) {
void Daemon::ftSendRequest(PIByteArray & data) {
PIDataTransfer * dt = (PIDataTransfer*)emitter();
if (!dt) return;
PIByteArray hdr; hdr << int(DataTransfer);
@@ -253,7 +265,7 @@ void Daemon::dtSendRequest(PIByteArray & data) {
}
void Daemon::dtReceived(bool ok) {
void Daemon::ftReceived(bool ok) {
if (!ok) return;
PIDataTransfer * dt = (PIDataTransfer*)emitter();
if (!dt) return;
@@ -304,11 +316,6 @@ void Daemon::dataReceived(const PIString & from, const PIByteArray & data) {
fm.remoteRestoreDir();
}
break;
case DataTransfer:
r = remotes.value(from);
if (r)
r->dt.received(ba);
break;
};
if (!rba.isEmpty()) send(from, rba);
}

View File

@@ -65,22 +65,28 @@ private:
};
class Remote: public PIThread {
PIOBJECT_SUBCLASS(Remote, PIThread)
public:
Remote(const PIString & n = PIString()) {dt.setName(n); ft.setName(n); dir_my = PIDir::current();}
Remote(const PIString & n = PIString());
void sendData(const PIByteArray & d) {_d = d; startOnce();}
EVENT_HANDLER1(void, ftSendRequest, PIByteArray &, data) {sendRequest(name(), data);}
//EVENT1(ftReceived, const PIString & , name)
EVENT2(sendRequest, const PIString & , name, PIByteArray &, data)
EVENT1(receiveFinished, bool, ok)
EVENT_HANDLER1(void, received, const PIByteArray & , data) {ft.received(data);}
PIDir dir_my, dir_remote;
PIDataTransfer dt;
PIFileTransfer ft;
PIByteArray _d;
void run() {dt.send(_d);}
//void run() {ft.send(_d);}
};
EVENT_HANDLER2(void, tileEvent, PIScreenTile *, t, PIScreenTypes::TileEvent, e);
EVENT_HANDLER1(void, keyEvent, PIKbdListener::KeyEvent, key);
EVENT_HANDLER1(void, fmKeyEvent, PIKbdListener::KeyEvent, key);
EVENT_HANDLER2(void, timerEvent, void * , _d, int, delim);
EVENT_HANDLER1(void, dtSendRequest, PIByteArray &, data);
EVENT_HANDLER1(void, dtReceived, bool, ok);
EVENT_HANDLER1(void, ftSendRequest, PIByteArray &, data);
EVENT_HANDLER1(void, ftReceived, bool, ok);
EVENT(menuRequest);
void hideAll();
void showTile(PIScreenTile * t, const PIString & header = PIString());