/***************************************************************************
- * Copyright (C) 2005-2013 by the Quassel Project *
+ * Copyright (C) 2005-2015 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
#ifndef CORETRANSFER_H
#define CORETRANSFER_H
+#include <QPointer>
+
#include "transfer.h"
+#include "peer.h"
+
+class QTcpSocket;
class CoreTransfer : public Transfer
{
CoreTransfer(Direction direction, const QString &nick, const QString &fileName, const QHostAddress &address, quint16 port, quint64 size = 0, QObject *parent = 0);
public slots:
+ void start();
+
// called through sync calls
void requestAccepted(PeerPtr peer);
void requestRejected(PeerPtr peer);
+private slots:
+ void startReceiving();
+ void onDataReceived();
+ void onSocketDisconnected();
+ void onSocketError(QAbstractSocket::SocketError error);
+
+private:
+ void setupConnectionForReceive();
+ bool relayData(const QByteArray &data, bool requireChunkSize);
+ virtual void cleanUp();
+
+ QPointer<Peer> _peer;
+ QTcpSocket *_socket;
+ quint64 _pos;
+ QByteArray _buffer;
+ bool _reading;
};
#endif