summaryrefslogtreecommitdiff
path: root/noncore/net/opieirc/dcctransfer.h
blob: 775ed24634d1439b5fe6a36141803baad6cdeb20 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
#ifndef DCCTRANSFER_H
#define DCCTRANSFER_H

#include <qobject.h>

class QSocket;
class QFile;
class QString;

class DCCTransfer: public QObject {
    Q_OBJECT
public:
    enum Type { Send, Recv };
    enum EndCode { Successfull, SelfAborted, PeerAborted, Timeout };

    DCCTransfer(Q_UINT32 ip4Addr, Q_UINT16 port, const QString &filename, unsigned int size);
    virtual ~DCCTransfer();

    void cancel();

    QString filename();

signals:
    virtual void finished(DCCTransfer *transfer, EndCode code);
    virtual void progress(int progress);

protected slots:
    virtual void slotProcess() = 0;
    virtual void slotFinished() = 0;

protected:
    QSocket *m_socket;
    QFile *m_file;
    unsigned int m_bufSize;
    char *m_buffer;
    Q_UINT32 m_ip4Addr;
    Q_UINT16 m_port;
    unsigned int m_totalSize;
    unsigned int m_processedSize;
    bool m_cancel;
    bool m_timeout;
};

#endif