summaryrefslogtreecommitdiffstats
path: root/pica-client
diff options
context:
space:
mode:
authorme_desk <me_desk@fb96df88-216d-11de-830c-f3023f12d8ac>2014-06-28 22:03:12 +0000
committerme_desk <me_desk@fb96df88-216d-11de-830c-f3023f12d8ac>2014-06-28 22:03:12 +0000
commit2ca40dbee2a3d7bb320d03395e51297af5d481fb (patch)
tree39a679f968df01fcdd9ffbf1e02a3995edcaaa49 /pica-client
parent5876e52dfae8a7a682bfc9404c3ad343af219ecb (diff)
downloadpica-pica-2ca40dbee2a3d7bb320d03395e51297af5d481fb.tar.gz
pica-pica-2ca40dbee2a3d7bb320d03395e51297af5d481fb.zip
added file_finished() callback
git-svn-id: svn://localhost/project_picapica/trunk@313 fb96df88-216d-11de-830c-f3023f12d8ac
Diffstat (limited to 'pica-client')
-rw-r--r--pica-client/filetransfercontroller.cpp12
-rw-r--r--pica-client/filetransfercontroller.h5
-rw-r--r--pica-client/skynet.cpp23
-rw-r--r--pica-client/skynet.h6
4 files changed, 42 insertions, 4 deletions
diff --git a/pica-client/filetransfercontroller.cpp b/pica-client/filetransfercontroller.cpp
index 61534c9..a293827 100644
--- a/pica-client/filetransfercontroller.cpp
+++ b/pica-client/filetransfercontroller.cpp
@@ -20,6 +20,17 @@ FileTransferController::FileTransferController(QObject *parent) :
connect(skynet, SIGNAL(OutgoingFileRequestDenied(QByteArray)), this, SLOT(file_denied_by_peer(QByteArray)));
}
+void FileTransferController::file_finished_incoming(QByteArray peer_id)
+{
+ if (ftdialogs_in.contains(peer_id))
+ ftdialogs_in.remove(peer_id);
+}
+
+void FileTransferController::file_finished_outgoing(QByteArray peer_id)
+{
+ if (ftdialogs_out.contains(peer_id))
+ ftdialogs_out.remove(peer_id);
+}
void FileTransferController::file_progress(QByteArray peer_id, quint64 bytes_sent, quint64 bytes_received)
{
@@ -44,7 +55,6 @@ void FileTransferController::file_request(QByteArray peer_id, quint64 file_size,
FileTransferDialog *ftd = new FileTransferDialog(peer_id, filename, file_size, FileTransferDialog::RECEIVING);
ftdialogs_in[peer_id] = ftd;
- fsizes[peer_id] = file_size;
fnames[peer_id] = filename;
connect(ftd, SIGNAL(acceptedFile(QByteArray)), this, SLOT(file_accepted_by_me(QByteArray)));
diff --git a/pica-client/filetransfercontroller.h b/pica-client/filetransfercontroller.h
index f261605..99282c6 100644
--- a/pica-client/filetransfercontroller.h
+++ b/pica-client/filetransfercontroller.h
@@ -18,7 +18,6 @@ private:
QMap<QByteArray, FileTransferDialog*> ftdialogs_in;
QMap<QByteArray, FileTransferDialog*> ftdialogs_out;
- QMap<QByteArray, quint64> fsizes;
QMap<QByteArray, QString> fnames;
@@ -40,6 +39,8 @@ public slots:
void file_cancelled_outgoing(QByteArray peer_id);
void file_ioerror_outgoing(QByteArray peer_id);
+ void file_finished_incoming(QByteArray peer_id);
+
//from me (file transfer dialog shown to user) to remote peer
void file_accepted_by_me(QByteArray peer_id);
void file_denied_by_me(QByteArray peer_id);
@@ -49,6 +50,8 @@ public slots:
void send_file(QByteArray peer_id);
+ void file_finished_outgoing(QByteArray peer_id);
+
};
#endif // FILETRANSFERCONTROLLER_H
diff --git a/pica-client/skynet.cpp b/pica-client/skynet.cpp
index 462ad02..6426538 100644
--- a/pica-client/skynet.cpp
+++ b/pica-client/skynet.cpp
@@ -28,7 +28,8 @@ PICA_client_callbacks cbs = {
accepted_file_cb,
denied_file_cb,
file_progress,
- file_control
+ file_control,
+ file_finished
};
PICA_client_init(&cbs);
@@ -565,6 +566,16 @@ void SkyNet::emit_OutgoingFileResumed(QByteArray peer_id)
emit OutgoingFileResumed(peer_id);
}
+void SkyNet::emit_OutgoingFileFinished(QByteArray peer_id)
+{
+ emit OutgoingFileFinished(peer_id);
+}
+
+void SkyNet::emit_IncomingFileFinished(QByteArray peer_id)
+{
+ emit IncomingFileFinished(peer_id);
+}
+
//callbacks
//all callbacks are executed in separate thread, created in Nodethread instance, REMEMBER THAT !!!
@@ -616,7 +627,8 @@ void SkyNet::notfound_cb(const unsigned char *callee_id)
void SkyNet::channel_closed_cb(const unsigned char *peer_id, int reason)
{
- qDebug()<<"channel closed ("<<QByteArray((const char*)peer_id, PICA_ID_SIZE).toBase64()<<")\n";
+ qDebug()<<"channel closed ("<<QByteArray((const char*)peer_id, PICA_ID_SIZE).toBase64()
+ <<", error_code =" << reason << ")\n";
}
@@ -713,3 +725,10 @@ void SkyNet::file_control(const unsigned char *peer_id, unsigned int sender_cmd,
}
}
+void SkyNet::file_finished(const unsigned char *peer_id, int sending)
+{
+ if (sending)
+ skynet->emit_OutgoingFileFinished(QByteArray((const char *)peer_id, PICA_ID_SIZE));
+ else
+ skynet->emit_IncomingFileFinished(QByteArray((const char *)peer_id, PICA_ID_SIZE));
+}
diff --git a/pica-client/skynet.h b/pica-client/skynet.h
index a053083..91eb2f1 100644
--- a/pica-client/skynet.h
+++ b/pica-client/skynet.h
@@ -51,6 +51,8 @@ signals:
void OutgoingFileCancelled(QByteArray peer_id);
void OutgoingFileIoError(QByteArray peer_id);
void OutgoingFileResumed(QByteArray peer_id);
+ void OutgoingFileFinished(QByteArray peer_id);
+ void IncomingFileFinished(QByteArray peer_id);
private:
Nodes nodes;
@@ -88,6 +90,8 @@ private:
void emit_OutgoingFileIoError(QByteArray peer_id);
void emit_OutgoingFileResumed(QByteArray peer_id);
+ void emit_OutgoingFileFinished(QByteArray peer_id);
+ void emit_IncomingFileFinished(QByteArray peer_id);
//получение сообщения.
static void newmsg_cb(const unsigned char *peer_id,const char* msgbuf,unsigned int nb,int type);
@@ -118,6 +122,8 @@ private:
static void file_control(const unsigned char *peer_id, unsigned int sender_cmd, unsigned int receiver_cmd);
+ static void file_finished(const unsigned char *peer_id, int sending);
+
private slots:
void nodethread_finished();
void nodethread_connected(QString addr, quint16 port, NodeThread *thread);