modernize: Use '= default' instead of empty ctor/dtor bodies
[quassel.git] / src / core / coretransfer.h
index 9d57db3..02c21c8 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-2013 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  *
  *   51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.         *
  ***************************************************************************/
 
-#ifndef CORETRANSFER_H
-#define CORETRANSFER_H
+#pragma once
+
+#include <QPointer>
 
 #include "transfer.h"
+#include "peer.h"
+
+class QTcpSocket;
 
 class CoreTransfer : public Transfer
 {
     Q_OBJECT
-    SYNCABLE_OBJECT
 
 public:
-    CoreTransfer(Direction direction, const QString &nick, const QString &fileName, const QHostAddress &address, quint16 port, quint64 size = 0, QObject *parent = 0);
+    CoreTransfer(Direction direction, const QString &nick, const QString &fileName, const QHostAddress &address, quint16 port, quint64 size = 0, QObject *parent = nullptr);
+
+    quint64 transferred() const override;
 
 public slots:
+    void start();
+
     // called through sync calls
-    void requestAccepted(PeerPtr peer);
-    void requestRejected(PeerPtr peer);
+    void requestAccepted(PeerPtr peer) override;
+    void requestRejected(PeerPtr peer) override;
 
-};
+private slots:
+    void startReceiving();
+    void onDataReceived();
+    void onSocketDisconnected();
+    void onSocketError(QAbstractSocket::SocketError error);
+
+private:
+    void setupConnectionForReceive();
+    bool relayData(const QByteArray &data, bool requireChunkSize);
+    void cleanUp() override;
 
-#endif
+    QPointer<Peer> _peer;
+    QTcpSocket *_socket;
+    quint64 _pos;
+    QByteArray _buffer;
+    bool _reading;
+};