X-Git-Url: https://git.quassel-irc.org/?p=quassel.git;a=blobdiff_plain;f=src%2Fcore%2Fcoretransfer.cpp;h=209a800fcd3d23a692399e771ab97711ec28c44a;hp=766136e0d17bb2145f5fdefedac408c5cad7cd80;hb=c194ed5fb3d15e14b9364f9796d3521910dc72fe;hpb=324ae188301d46e2268462bc0d8411baed8f00b8 diff --git a/src/core/coretransfer.cpp b/src/core/coretransfer.cpp index 766136e0..209a800f 100644 --- a/src/core/coretransfer.cpp +++ b/src/core/coretransfer.cpp @@ -1,5 +1,5 @@ /*************************************************************************** - * Copyright (C) 2005-2015 by the Quassel Project * + * Copyright (C) 2005-2018 by the Quassel Project * * devel@quassel-irc.org * * * * This program is free software; you can redistribute it and/or modify * @@ -27,11 +27,9 @@ const qint64 chunkSize = 16 * 1024; -INIT_SYNCABLE_OBJECT(CoreTransfer) - CoreTransfer::CoreTransfer(Direction direction, const QString &nick, const QString &fileName, const QHostAddress &address, quint16 port, quint64 fileSize, QObject *parent) : Transfer(direction, nick, fileName, address, port, fileSize, parent), - _socket(0), + _socket(nullptr), _pos(0), _reading(false) { @@ -39,12 +37,18 @@ CoreTransfer::CoreTransfer(Direction direction, const QString &nick, const QStri } +quint64 CoreTransfer::transferred() const +{ + return _pos; +} + + void CoreTransfer::cleanUp() { if (_socket) { _socket->close(); _socket->deleteLater(); - _socket = 0; + _socket = nullptr; } _buffer.clear(); @@ -54,7 +58,7 @@ void CoreTransfer::cleanUp() void CoreTransfer::onSocketDisconnected() { - if (state() == State::Connecting || state() == State::Transferring) { + if (status() == Status::Connecting || status() == Status::Transferring) { setError(tr("Socket closed while still transferring!")); } else @@ -66,7 +70,7 @@ void CoreTransfer::onSocketError(QAbstractSocket::SocketError error) { Q_UNUSED(error) - if (state() == State::Connecting || state() == State::Transferring) { + if (status() == Status::Connecting || status() == Status::Transferring) { setError(tr("DCC connection error: %1").arg(_socket->errorString())); } } @@ -74,11 +78,11 @@ void CoreTransfer::onSocketError(QAbstractSocket::SocketError error) void CoreTransfer::requestAccepted(PeerPtr peer) { - if (_peer || !peer || state() != State::New) + if (_peer || !peer || status() != Status::New) return; // transfer was already accepted _peer = peer; - setState(State::Pending); + setStatus(Status::Pending); emit accepted(peer); @@ -89,11 +93,11 @@ void CoreTransfer::requestAccepted(PeerPtr peer) void CoreTransfer::requestRejected(PeerPtr peer) { - if (_peer || state() != State::New) + if (_peer || status() != Status::New) return; _peer = peer; - setState(State::Rejected); + setStatus(Status::Rejected); emit rejected(peer); } @@ -101,7 +105,7 @@ void CoreTransfer::requestRejected(PeerPtr peer) void CoreTransfer::start() { - if (!_peer || state() != State::Pending || direction() != Direction::Receive) + if (!_peer || status() != Status::Pending || direction() != Direction::Receive) return; setupConnectionForReceive(); @@ -115,7 +119,7 @@ void CoreTransfer::setupConnectionForReceive() return; } - setState(State::Connecting); + setStatus(Status::Connecting); _socket = new QTcpSocket(this); connect(_socket, SIGNAL(connected()), SLOT(startReceiving())); @@ -129,7 +133,7 @@ void CoreTransfer::setupConnectionForReceive() void CoreTransfer::startReceiving() { - setState(State::Transferring); + setStatus(Status::Transferring); } @@ -142,6 +146,7 @@ void CoreTransfer::onDataReceived() while (_socket->bytesAvailable()) { QByteArray data = _socket->read(chunkSize); _pos += data.size(); + emit transferredChanged(transferred()); if (!relayData(data, true)) return; @@ -162,7 +167,7 @@ void CoreTransfer::onDataReceived() else if (_pos == fileSize()) { qDebug() << "DCC Receive: Transfer finished"; if (relayData(QByteArray(), false)) // empty buffer - setState(State::Completed); + setStatus(Status::Completed); } _reading = false;