X-Git-Url: https://git.quassel-irc.org/?p=quassel.git;a=blobdiff_plain;f=src%2Fcore%2Fcoretransfer.cpp;h=0d454ae3850bf10107c1b1a40a3029d01c2f8d2b;hp=3ccb5a393936a72f35fce3abab93a31b2d18ea4d;hb=22754c6f9444b0cd004c12984cf6eb183c2f6ae5;hpb=921e54680da16fcf2adb7a90506875aceb6633a4 diff --git a/src/core/coretransfer.cpp b/src/core/coretransfer.cpp index 3ccb5a39..0d454ae3 100644 --- a/src/core/coretransfer.cpp +++ b/src/core/coretransfer.cpp @@ -39,6 +39,12 @@ CoreTransfer::CoreTransfer(Direction direction, const QString &nick, const QStri } +quint64 CoreTransfer::transferred() const +{ + return _pos; +} + + void CoreTransfer::cleanUp() { if (_socket) { @@ -54,7 +60,7 @@ void CoreTransfer::cleanUp() void CoreTransfer::onSocketDisconnected() { - if (state() == Connecting || state() == Transferring) { + if (status() == Status::Connecting || status() == Status::Transferring) { setError(tr("Socket closed while still transferring!")); } else @@ -66,7 +72,7 @@ void CoreTransfer::onSocketError(QAbstractSocket::SocketError error) { Q_UNUSED(error) - if (state() == Connecting || state() == Transferring) { + if (status() == Status::Connecting || status() == Status::Transferring) { setError(tr("DCC connection error: %1").arg(_socket->errorString())); } } @@ -74,11 +80,11 @@ void CoreTransfer::onSocketError(QAbstractSocket::SocketError error) void CoreTransfer::requestAccepted(PeerPtr peer) { - if (_peer || !peer || state() != New) + if (_peer || !peer || status() != Status::New) return; // transfer was already accepted _peer = peer; - setState(Pending); + setStatus(Status::Pending); emit accepted(peer); @@ -89,11 +95,11 @@ void CoreTransfer::requestAccepted(PeerPtr peer) void CoreTransfer::requestRejected(PeerPtr peer) { - if (_peer || state() != New) + if (_peer || status() != Status::New) return; _peer = peer; - setState(Rejected); + setStatus(Status::Rejected); emit rejected(peer); } @@ -101,7 +107,7 @@ void CoreTransfer::requestRejected(PeerPtr peer) void CoreTransfer::start() { - if (!_peer || state() != Pending || direction() != Receive) + if (!_peer || status() != Status::Pending || direction() != Direction::Receive) return; setupConnectionForReceive(); @@ -115,7 +121,7 @@ void CoreTransfer::setupConnectionForReceive() return; } - setState(Connecting); + setStatus(Status::Connecting); _socket = new QTcpSocket(this); connect(_socket, SIGNAL(connected()), SLOT(startReceiving())); @@ -129,7 +135,7 @@ void CoreTransfer::setupConnectionForReceive() void CoreTransfer::startReceiving() { - setState(Transferring); + setStatus(Status::Transferring); } @@ -162,7 +168,7 @@ void CoreTransfer::onDataReceived() else if (_pos == fileSize()) { qDebug() << "DCC Receive: Transfer finished"; if (relayData(QByteArray(), false)) // empty buffer - setState(Completed); + setStatus(Status::Completed); } _reading = false; @@ -180,7 +186,8 @@ bool CoreTransfer::relayData(const QByteArray &data, bool requireChunkSize) // we only want to send data to the client once we have reached the chunksize if (_buffer.size() > 0 && (_buffer.size() >= chunkSize || !requireChunkSize)) { - SYNC_OTHER(dataReceived, ARG(_peer), ARG(_buffer)); + Peer *p = _peer.data(); + SYNC_OTHER(dataReceived, ARG(p), ARG(_buffer)); _buffer.clear(); }