8 #include "QXmppLogger.h" 10 #include "StreamError.h" 12 #include <QAbstractSocket> 13 #include <QDomDocument> 15 #include <QXmlStreamReader> 19 class tst_QXmppStream;
25 struct ServerAddress {
36 class SendDataInterface
39 virtual bool sendData(
const QByteArray &) = 0;
45 struct Unfinished { };
50 UnsupportedXmlFeature,
57 using Result = std::variant<QDomElement, Unfinished, Error>;
59 Result process(QXmlStreamReader &);
63 QDomElement currentElement;
67 class QXMPP_EXPORT XmppSocket :
public QXmppLoggable,
public SendDataInterface
71 explicit XmppSocket(QObject *parent);
72 XmppSocket(QSslSocket *socket, QObject *parent);
73 ~XmppSocket()
override =
default;
75 QSslSocket *internalSocket()
const {
return m_socket; }
76 void resetInternalSocket();
78 bool isConnected()
const;
79 void connectToHost(
const ServerAddress &);
80 void disconnectFromHost();
81 bool sendData(
const QByteArray &)
override;
83 bool isStreamReceived()
const {
return m_streamReceived; }
85 Q_SIGNAL
void started();
86 Q_SIGNAL
void disconnected();
87 Q_SIGNAL
void stanzaReceived(
const QDomElement &);
88 Q_SIGNAL
void streamReceived(
const QXmpp::Private::StreamOpen &);
89 Q_SIGNAL
void streamClosed();
90 Q_SIGNAL
void errorOccurred(
const QString &text, std::variant<StreamError, QAbstractSocket::SocketError> condition);
91 Q_SIGNAL
void sslErrorsOccurred(
const QList<QSslError> &errors);
93 Q_SIGNAL
void internalSocketStateChanged();
96 void setSocket(QSslSocket *socket);
97 void throwError(
const QString &text,
StreamError condition);
98 void processData(
const QString &data);
100 friend class ::tst_QXmppStream;
102 QXmlStreamReader m_reader;
103 std::optional<DomReader> m_domReader;
104 bool m_streamReceived =
false;
105 bool m_directTls =
false;
106 bool m_acceptInput =
true;
108 QSslSocket *m_socket =
nullptr;
113 #endif // XMPPSOCKET_H The QXmppLoggable class represents a source of logging messages.
Definition: QXmppLogger.h:108
StreamError
Definition: QXmppStreamError.h:15
Definition: Algorithms.h:14
std::variant< T, QXmppError > Result
Definition: QXmppGlobal.h:209