aboutsummaryrefslogtreecommitdiff
path: root/source/QXmppTransferManager.h
diff options
context:
space:
mode:
authorJeremy Lainé <jeremy.laine@m4x.org>2010-03-16 12:22:56 +0000
committerJeremy Lainé <jeremy.laine@m4x.org>2010-03-16 12:22:56 +0000
commit4755c74230c37787e113f222e47fb8886c5f6bd7 (patch)
tree174e66e972927ff1f8b97ca2848de27910fada6e /source/QXmppTransferManager.h
parent7dd4908d6d0429bd208da03a891ce127096fbf92 (diff)
downloadqxmpp-4755c74230c37787e113f222e47fb8886c5f6bd7.tar.gz
make it possible to send arbitrary QIODevice using QXmppTransferManager
Diffstat (limited to 'source/QXmppTransferManager.h')
-rw-r--r--source/QXmppTransferManager.h42
1 files changed, 33 insertions, 9 deletions
diff --git a/source/QXmppTransferManager.h b/source/QXmppTransferManager.h
index f0e74af2..5a6704e8 100644
--- a/source/QXmppTransferManager.h
+++ b/source/QXmppTransferManager.h
@@ -43,6 +43,32 @@ class QXmppSocksClient;
class QXmppSocksServer;
class QXmppStreamInitiationIq;
+class QXmppTransferFileInfo
+{
+public:
+ QXmppTransferFileInfo();
+
+ QDateTime date() const;
+ void setDate(const QDateTime &date);
+
+ QByteArray hash() const;
+ void setHash(const QByteArray &hash);
+
+ QString name() const;
+ void setName(const QString &name);
+
+ qint64 size() const;
+ void setSize(qint64 size);
+
+ bool operator==(const QXmppTransferFileInfo &other) const;
+
+private:
+ QDateTime m_date;
+ QByteArray m_hash;
+ QString m_name;
+ qint64 m_size;
+};
+
/// \brief The QXmppTransferJob class represents a single file transfer job.
///
/// \sa QXmppTransferManager
@@ -97,6 +123,7 @@ public:
QXmppTransferJob::State state() const;
// XEP-0096 : File transfer
+ QXmppTransferFileInfo fileInfo() const;
QDateTime fileDate() const;
QByteArray fileHash() const;
QString fileName() const;
@@ -123,6 +150,9 @@ signals:
void stateChanged(QXmppTransferJob::State state);
private slots:
+ void disconnected();
+ void receiveData();
+ void sendData();
void slotTerminated();
private:
@@ -150,10 +180,7 @@ private:
QHash<int, QVariant> m_data;
// file meta-data
- QDateTime m_fileDate;
- QByteArray m_fileHash;
- QString m_fileName;
- int m_fileSize;
+ QXmppTransferFileInfo m_fileInfo;
// for in-band bytestreams
int m_ibbSequence;
@@ -179,6 +206,7 @@ class QXmppTransferManager : public QObject
public:
QXmppTransferManager(QXmppClient* client);
QXmppTransferJob *sendFile(const QString &jid, const QString &fileName);
+ QXmppTransferJob *sendFile(const QString &jid, QIODevice *device, const QXmppTransferFileInfo &fileInfo);
QString proxy() const;
void setProxy(const QString &proxyJid);
int supportedMethods() const;
@@ -197,25 +225,21 @@ private slots:
void ibbDataIqReceived(const QXmppIbbDataIq&);
void ibbOpenIqReceived(const QXmppIbbOpenIq&);
void iqReceived(const QXmppIq&);
+ void jobDestroyed(QObject *object);
void jobError(QXmppTransferJob::Error error);
void jobStateChanged(QXmppTransferJob::State state);
void socksServerConnected(QTcpSocket *socket, const QString &hostName, quint16 port);
- void socksSocketDataReceived();
- void socksSocketDataSent();
- void socksSocketDisconnected();
void streamInitiationIqReceived(const QXmppStreamInitiationIq&);
private:
QXmppTransferJob *getJobByRequestId(const QString &jid, const QString &id);
QXmppTransferJob *getJobBySid(const QString &jid, const QString &sid);
- QXmppTransferJob *getJobBySocksSocket(QTcpSocket *socksSocket);
void byteStreamResponseReceived(const QXmppIq&);
void byteStreamResultReceived(const QXmppByteStreamIq&);
void byteStreamSetReceived(const QXmppByteStreamIq&);
void ibbResponseReceived(const QXmppIq&);
void streamInitiationResultReceived(const QXmppStreamInitiationIq&);
void streamInitiationSetReceived(const QXmppStreamInitiationIq&);
- void socksServerSendData(QXmppTransferJob *job);
void socksServerSendOffer(QXmppTransferJob *job);
// reference to client object (no ownership)