5#ifndef QXMPPTRANSFERMANAGER_H
6#define QXMPPTRANSFERMANAGER_H
8#include "QXmppClientExtension.h"
21class QXmppStreamInitiationIq;
22class QXmppTransferFileInfoPrivate;
23class QXmppTransferJobPrivate;
25class QXmppTransferManagerPrivate;
27class QXMPP_EXPORT QXmppTransferFileInfo
30 QXmppTransferFileInfo();
32 ~QXmppTransferFileInfo();
34 QDateTime
date()
const;
37 QByteArray
hash()
const;
50 QXmppTransferFileInfo &
operator=(
const QXmppTransferFileInfo &other);
51 bool operator==(
const QXmppTransferFileInfo &other)
const;
54 static constexpr std::tuple XmlTag = { u
"file", QXmpp::Private::ns_stream_initiation_file_transfer };
55 void parse(
const QDomElement &element);
56 void toXml(QXmlStreamWriter *writer)
const;
60 QSharedDataPointer<QXmppTransferFileInfoPrivate> d;
72 Q_PROPERTY(QString
jid READ
jid CONSTANT)
109 Q_DECLARE_FLAGS(Methods, Method)
134 qint64 speed()
const;
140 QUrl localFileUrl()
const;
141 void setLocalFileUrl(
const QUrl &localFileUrl);
144 QDateTime fileDate()
const;
145 QByteArray fileHash()
const;
146 QString fileName()
const;
147 qint64 fileSize()
const;
173 Q_SLOT
void accept(
const QString &filePath);
174 Q_SLOT
void accept(QIODevice *output);
179 Q_SLOT
void _q_terminated();
184 const std::unique_ptr<QXmppTransferJobPrivate> d;
185 friend class QXmppTransferManager;
186 friend class QXmppTransferManagerPrivate;
187 friend class QXmppTransferIncomingJob;
188 friend class QXmppTransferOutgoingJob;
208 QString
proxy() const;
209 void setProxy(const QString &proxyJid);
243 Q_SLOT
QXmppTransferJob *
sendFile(const QString &jid, const QString &filePath, const QString &description = QString());
253 Q_SLOT
void _q_iqReceived(const
QXmppIq &);
254 Q_SLOT
void _q_jobDestroyed(QObject *
object);
256 Q_SLOT
void _q_jobFinished();
258 Q_SLOT
void _q_socksServerConnected(QTcpSocket *socket, const QString &hostName, quint16 port);
261 void byteStreamResponseReceived(const
QXmppIq &);
265 void ibbDataIqReceived(const QXmppIbbDataIq &);
267 void ibbResponseReceived(const
QXmppIq &);
268 void streamInitiationIqReceived(const QXmppStreamInitiationIq &);
269 void streamInitiationResultReceived(const QXmppStreamInitiationIq &);
270 void streamInitiationSetReceived(const QXmppStreamInitiationIq &);
273 const std::unique_ptr<QXmppTransferManagerPrivate> d;
275 friend class QXmppTransferManagerPrivate;
Definition QXmppByteStreamIq.h:14
virtual QStringList discoveryFeatures() const
Definition QXmppClientExtension.cpp:22
virtual void onUnregistered(QXmppClient *client)
Definition QXmppClientExtension.cpp:95
virtual void onRegistered(QXmppClient *client)
Definition QXmppClientExtension.cpp:85
QXmppClient * client() const
Definition QXmppClientExtension.cpp:57
QXmppClientExtension()
Definition QXmppClientExtension.cpp:12
virtual bool handleStanza(const QDomElement &stanza)
You need to implement this method to process incoming XMPP stanzas.
Definition client/compat/removed_api.cpp:44
Main class for starting and managing connections to XMPP servers.
Definition QXmppClient.h:62
Definition QXmppIbbIq.h:38
Definition QXmppIbbIq.h:12
The QXmppIq class is the base class for all IQs.
Definition QXmppIq.h:23
QXmppLoggable(QObject *parent=nullptr)
Definition QXmppLogger.cpp:57
Definition QXmppTransferManager.h:28
QDateTime date() const
Definition QXmppTransferManager.cpp:77
void setHash(const QByteArray &hash)
Definition QXmppTransferManager.cpp:101
void setName(const QString &name)
Definition QXmppTransferManager.cpp:117
bool isNull() const
Definition QXmppTransferManager.cpp:157
void setSize(qint64 size)
Definition QXmppTransferManager.cpp:149
QXmppTransferFileInfo(const QXmppTransferFileInfo &other)
Default copy-constructor.
QXmppTransferFileInfo & operator=(const QXmppTransferFileInfo &other)
Default assignment operator.
void setDescription(const QString &description)
Definition QXmppTransferManager.cpp:133
bool operator==(const QXmppTransferFileInfo &other) const
Definition QXmppTransferManager.cpp:169
QString name() const
Definition QXmppTransferManager.cpp:109
qint64 size() const
Definition QXmppTransferManager.cpp:141
QByteArray hash() const
Definition QXmppTransferManager.cpp:93
QString description() const
Definition QXmppTransferManager.cpp:125
void setDate(const QDateTime &date)
Definition QXmppTransferManager.cpp:85
Definition QXmppTransferManager.h:64
QString fileName
The name of the file.
Definition QXmppTransferManager.h:79
QXmppTransferJob::Error error() const
Definition QXmppTransferManager.cpp:314
Q_SLOT void abort()
Definition QXmppTransferManager.cpp:271
Q_SIGNAL void progress(qint64 done, qint64 total)
This signal is emitted to indicate the progress of this transfer job.
Method method
The job's transfer method.
Definition QXmppTransferManager.h:74
void setLocalFileUrl(const QUrl &localFileUrl)
Definition QXmppTransferManager.cpp:335
Q_SIGNAL void stateChanged(QXmppTransferJob::State state)
This signal is emitted when the transfer job changes state.
qint64 fileSize
The size of the file.
Definition QXmppTransferManager.h:81
Method
This enum is used to describe a transfer method.
Definition QXmppTransferManager.h:102
@ AnyMethod
Any supported transfer method.
Definition QXmppTransferManager.h:106
@ NoMethod
No transfer method.
Definition QXmppTransferManager.h:103
@ SocksMethod
XEP-0065: SOCKS5 Bytestreams
Definition QXmppTransferManager.h:105
@ InBandMethod
XEP-0047: In-Band Bytestreams
Definition QXmppTransferManager.h:104
Direction
This enum is used to describe the direction of a transfer job.
Definition QXmppTransferManager.h:85
@ OutgoingDirection
The file is being sent.
Definition QXmppTransferManager.h:87
@ IncomingDirection
The file is being received.
Definition QXmppTransferManager.h:86
QString jid
The remote party's JID.
Definition QXmppTransferManager.h:72
State
This enum is used to describe the state of a transfer job.
Definition QXmppTransferManager.h:112
@ OfferState
The transfer is being offered to the remote party.
Definition QXmppTransferManager.h:113
@ FinishedState
The transfer is finished.
Definition QXmppTransferManager.h:116
@ StartState
The transfer is being connected.
Definition QXmppTransferManager.h:114
@ TransferState
The transfer is ongoing.
Definition QXmppTransferManager.h:115
Q_SIGNAL void localFileUrlChanged(const QUrl &localFileUrl)
This signal is emitted when the local file URL changes.
QUrl localFileUrl
The local file URL.
Definition QXmppTransferManager.h:70
Error
This enum is used to describe the type of error encountered by a transfer job.
Definition QXmppTransferManager.h:92
@ AbortError
The file transfer was aborted.
Definition QXmppTransferManager.h:94
@ FileAccessError
An error was encountered trying to access a local file.
Definition QXmppTransferManager.h:95
@ ProtocolError
An error was encountered in the file transfer protocol.
Definition QXmppTransferManager.h:97
@ FileCorruptError
The file is corrupt: the file size or hash do not match.
Definition QXmppTransferManager.h:96
@ NoError
No error occurred.
Definition QXmppTransferManager.h:93
Q_SIGNAL void error(QXmppTransferJob::Error error)
Direction direction
The job's transfer direction.
Definition QXmppTransferManager.h:68
Q_SLOT void accept(const QString &filePath)
Definition QXmppTransferManager.cpp:279
State state
The job's state.
Definition QXmppTransferManager.h:76
Definition QXmppTransferManager.h:192
void setSupportedMethods(QXmppTransferJob::Methods methods)
Definition QXmppTransferManager.cpp:1610
Q_SLOT QXmppTransferJob * sendFile(const QString &jid, const QString &filePath, const QString &description=QString())
Definition QXmppTransferManager.cpp:1247
QString proxy
The JID of the bytestream proxy to use for outgoing transfers.
Definition QXmppTransferManager.h:196
void setProxyOnly(bool proxyOnly)
Definition QXmppTransferManager.cpp:1593
Q_SIGNAL void jobFinished(QXmppTransferJob *job)
QXmppTransferManager()
Definition QXmppTransferManager.cpp:781
Q_SIGNAL void fileReceived(QXmppTransferJob *job)
bool proxyOnly
Whether the proxy will systematically be used for outgoing SOCKS5 bytestream transfers.
Definition QXmppTransferManager.h:198
void setProxy(const QString &proxyJid)
Definition QXmppTransferManager.cpp:1576
Q_SIGNAL void jobStarted(QXmppTransferJob *job)
This signal is emitted whenever a transfer job is started.
QXmppTransferJob::Methods supportedMethods
The supported stream methods.
Definition QXmppTransferManager.h:200