blob: 2c14c03d83e71e201fab22ab56d706cc9d8b560d (
plain) (
blame)
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
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
|
#ifndef QXMPPIBBTRANSFERJOB_H
#define QXMPPIBBTRANSFERJOB_H
#include <QObject>
class QIODevice;
class QXmppIbbOpenIq;
class QXmppIbbCloseIq;
class QXmppIbbErrorIq;
class QXmppDataIq;
class QXmppClient;
class QXmppIbbTransferJob : public QObject
{
Q_OBJECT
public:
QXmppIbbTransferJob(QXmppClient *parent = 0);
~QXmppIbbTransferJob();
QString getSid() const;
void setSid( const QString &sid );
QString getRemoteJid( ) const;
void setRemoteJid( const QString &jid );
QString getId() const;
void setId( const QString &id );
// Used by the client
public slots:
void requestTransfer( );
void acceptTransfer( );
void cancelTransfer( );
signals:
void transferRequested( const QString &sid, const QString &remoteJid );
void transferStarted( const QString &sid );
void transferFinished( const QString &sid, const QString &reason);
void transferCanceled( const QString &sid, const QString &reason );
void readyForTeardown( const QString &sid );
public:
void setIoDevice( QIODevice *io );
void setBlockSize( long size);
// Used by the stream.
void gotAck();
void gotOpen( const QXmppIbbOpenIq &open );
void gotClose( const QXmppIbbCloseIq &close );
void gotError( const QXmppIbbErrorIq &err );
void gotData( const QXmppDataIq &data );
private:
enum TransferState { Idle, Requesting, Pending, TransferringIn, TransferringOut };
void sendNextBlock();
QXmppClient *m_client;
QIODevice *m_io;
long m_blockSize;
qint64 m_streamBlockSize;
quint16 m_sequence;
QString m_sid;
QString m_id;
QString m_localJid;
QString m_remoteJid;
TransferState m_state;
};
#endif // QXMPPIBBTRANSFERJOB_H
|