QXmpp  Version: 1.15.1
QXmppIncomingClient.h
1 // SPDX-FileCopyrightText: 2010 Jeremy LainĂ© <jeremy.laine@m4x.org>
2 //
3 // SPDX-License-Identifier: LGPL-2.1-or-later
4 
5 #ifndef QXMPPINCOMINGCLIENT_H
6 #define QXMPPINCOMINGCLIENT_H
7 
8 #include "QXmppLogger.h"
9 
10 #include <memory>
11 
12 class QDomElement;
13 class QSslSocket;
14 class QXmppNonza;
15 class QXmppIncomingClientPrivate;
17 
18 namespace QXmpp::Private {
19 struct StreamOpen;
20 }
21 
26 class QXMPP_EXPORT QXmppIncomingClient : public QXmppLoggable
27 {
28  Q_OBJECT
29 public:
30  QXmppIncomingClient(QSslSocket *socket, const QString &domain, QObject *parent = nullptr);
31  ~QXmppIncomingClient() override;
32 
33  bool isConnected() const;
34  QString jid() const;
35 
36  bool sendPacket(const QXmppNonza &);
37  Q_SLOT bool sendData(const QByteArray &);
38  void disconnectFromHost();
39 
40  void setInactivityTimeout(int secs);
41  void setPasswordChecker(QXmppPasswordChecker *checker);
42 
44  Q_SIGNAL void elementReceived(const QDomElement &element);
45 
47  Q_SIGNAL void connected();
48 
50  Q_SIGNAL void disconnected();
51 
52 protected:
54  void handleStart();
55  void handleStream(const QXmpp::Private::StreamOpen &);
56  void handleStanza(const QDomElement &element);
58 
59 private:
60  Q_SLOT void onDigestReply();
61  Q_SLOT void onPasswordReply();
62  Q_SLOT void onSocketDisconnected();
63  Q_SLOT void onTimeout();
64 
65  void onSasl2Authenticated();
66  void sendStreamFeatures();
67 
68  const std::unique_ptr<QXmppIncomingClientPrivate> d;
69  friend class QXmppIncomingClientPrivate;
70 };
71 
72 #endif
The QXmppPasswordChecker class represents an abstract password checker.
Definition: QXmppPasswordChecker.h:80
The QXmppLoggable class represents a source of logging messages.
Definition: QXmppLogger.h:108
The QXmppIncomingClient class represents an incoming XMPP stream from an XMPP client.
Definition: QXmppIncomingClient.h:26
Definition: QXmppNonza.h:13
Definition: Algorithms.h:14