1
0
mirror of https://github.com/qTox/qTox.git synced 2024-03-22 14:00:36 +08:00

Updating to latest file transfer specs

This commit is contained in:
Bill Winslow 2014-08-04 20:00:17 -05:00
parent 3069a59b8c
commit 72c72a4ceb

View File

@ -249,7 +249,7 @@ void Core::onFileSendRequestCallback(Tox*, int32_t friendnumber, uint8_t filenum
fileRecvQueue.append(file); fileRecvQueue.append(file);
emit static_cast<Core*>(core)->fileReceiveRequested(fileRecvQueue.last()); emit static_cast<Core*>(core)->fileReceiveRequested(fileRecvQueue.last());
} }
void Core::onFileControlCallback(Tox*, int32_t friendnumber, uint8_t receive_send, uint8_t filenumber, void Core::onFileControlCallback(Tox* tox, int32_t friendnumber, uint8_t receive_send, uint8_t filenumber,
uint8_t control_type, const uint8_t*, uint16_t, void *core) uint8_t control_type, const uint8_t*, uint16_t, void *core)
{ {
ToxFile* file{nullptr}; ToxFile* file{nullptr};
@ -280,7 +280,7 @@ void Core::onFileControlCallback(Tox*, int32_t friendnumber, uint8_t receive_sen
qWarning("Core::onFileControlCallback: No such file in queue"); qWarning("Core::onFileControlCallback: No such file in queue");
return; return;
} }
if (control_type == TOX_FILECONTROL_ACCEPT && receive_send == 1) if (receive_send == 1 && control_type == TOX_FILECONTROL_ACCEPT)
{ {
file->status = ToxFile::TRANSMITTING; file->status = ToxFile::TRANSMITTING;
emit static_cast<Core*>(core)->fileTransferAccepted(*file); emit static_cast<Core*>(core)->fileTransferAccepted(*file);
@ -294,7 +294,15 @@ void Core::onFileControlCallback(Tox*, int32_t friendnumber, uint8_t receive_sen
file->status = ToxFile::STOPPED; file->status = ToxFile::STOPPED;
emit static_cast<Core*>(core)->fileTransferCancelled(file->friendId, file->fileNum, ToxFile::SENDING); emit static_cast<Core*>(core)->fileTransferCancelled(file->friendId, file->fileNum, ToxFile::SENDING);
file->sendFuture.waitForFinished(); // Wait for sendAllFileData to return before deleting the ToxFile file->sendFuture.waitForFinished(); // Wait for sendAllFileData to return before deleting the ToxFile
removeFileFromQueue(true, file->friendId, file->fileNum); removeFileFromQueue((bool)receive_send, file->friendId, file->fileNum);
}
else if (receive_send == 1 && control_type == TOX_FILECONTROL_FINISHED)
{
qDebug() << QString("Core::onFileControlCallback: Transfer of file %1 to friend %2 is complete")
.arg(file->fileNum).arg(file->friendId);
file->status = ToxFile::STOPPED;
emit static_cast<Core*>(core)->fileTransferFinished(*file);
removeFileFromQueue((bool)receive_send, file->friendId, file->fileNum);
} }
else if (receive_send == 0 && control_type == TOX_FILECONTROL_KILL) else if (receive_send == 0 && control_type == TOX_FILECONTROL_KILL)
{ {
@ -302,7 +310,7 @@ void Core::onFileControlCallback(Tox*, int32_t friendnumber, uint8_t receive_sen
.arg(file->fileNum).arg(file->friendId); .arg(file->fileNum).arg(file->friendId);
file->status = ToxFile::STOPPED; file->status = ToxFile::STOPPED;
emit static_cast<Core*>(core)->fileTransferCancelled(file->friendId, file->fileNum, ToxFile::RECEIVING); emit static_cast<Core*>(core)->fileTransferCancelled(file->friendId, file->fileNum, ToxFile::RECEIVING);
removeFileFromQueue(false, file->friendId, file->fileNum); removeFileFromQueue((bool)receive_send, file->friendId, file->fileNum);
} }
else if (receive_send == 0 && control_type == TOX_FILECONTROL_FINISHED) else if (receive_send == 0 && control_type == TOX_FILECONTROL_FINISHED)
{ {
@ -310,7 +318,9 @@ void Core::onFileControlCallback(Tox*, int32_t friendnumber, uint8_t receive_sen
.arg(file->fileNum).arg(file->friendId); .arg(file->fileNum).arg(file->friendId);
file->status = ToxFile::STOPPED; file->status = ToxFile::STOPPED;
emit static_cast<Core*>(core)->fileTransferFinished(*file); emit static_cast<Core*>(core)->fileTransferFinished(*file);
removeFileFromQueue(false, file->friendId, file->fileNum); removeFileFromQueue((bool)receive_send, file->friendId, file->fileNum);
// confirm receive is complete
tox_file_send_control(tox, file->friendId, 0, file->fileNum, TOX_FILECONTROL_FINISHED, nullptr, 0);
} }
else else
{ {
@ -989,9 +999,6 @@ void Core::sendAllFileData(Core *core, ToxFile* file)
} }
qDebug("Core::fileHeartbeat: Transfer finished"); qDebug("Core::fileHeartbeat: Transfer finished");
tox_file_send_control(core->tox, file->friendId, 0, file->fileNum, TOX_FILECONTROL_FINISHED, nullptr, 0); tox_file_send_control(core->tox, file->friendId, 0, file->fileNum, TOX_FILECONTROL_FINISHED, nullptr, 0);
file->status = ToxFile::STOPPED;
emit core->fileTransferFinished(*file);
removeFileFromQueue(true, file->friendId, file->fileNum);
} }
void Core::onAvInvite(void* _toxav, int32_t call_index, void* core) void Core::onAvInvite(void* _toxav, int32_t call_index, void* core)