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