00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026 #ifndef QXMPPOUTGOINGCLIENT_H
00027 #define QXMPPOUTGOINGCLIENT_H
00028
00029 #include "QXmppClient.h"
00030 #include "QXmppStanza.h"
00031 #include "QXmppStream.h"
00032
00033 class QDomElement;
00034 class QSslError;
00035
00036 class QXmppConfiguration;
00037 class QXmppPresence;
00038 class QXmppIq;
00039 class QXmppMessage;
00040 class QXmppSrvInfo;
00041
00042 class QXmppOutgoingClientPrivate;
00043
00047
00048 class QXmppOutgoingClient : public QXmppStream
00049 {
00050 Q_OBJECT
00051
00052 public:
00053 QXmppOutgoingClient(QObject *parent);
00054 ~QXmppOutgoingClient();
00055
00056 void connectToHost();
00057 bool isConnected() const;
00058
00059 QAbstractSocket::SocketError socketError();
00060 QXmppStanza::Error::Condition xmppStreamError();
00061
00062 QXmppConfiguration& configuration();
00063
00064 signals:
00066 void error(QXmppClient::Error);
00067
00069 void elementReceived(const QDomElement &element, bool &handled);
00070
00072 void presenceReceived(const QXmppPresence&);
00073
00075 void messageReceived(const QXmppMessage&);
00076
00078 void iqReceived(const QXmppIq&);
00079
00080 protected:
00082
00083 virtual void handleStart();
00084 virtual void handleStanza(const QDomElement &element);
00085 virtual void handleStream(const QDomElement &element);
00087
00088 private slots:
00089 void connectToHost(const QXmppSrvInfo &serviceInfo);
00090 void socketError(QAbstractSocket::SocketError);
00091 void socketSslErrors(const QList<QSslError>&);
00092
00093 void pingStart();
00094 void pingStop();
00095 void pingSend();
00096 void pingTimeout();
00097
00098 private:
00099 void sendAuthDigestMD5ResponseStep1(const QString& challenge);
00100 void sendAuthDigestMD5ResponseStep2(const QString& challenge);
00101 void sendNonSASLAuth(bool plaintext);
00102 void sendNonSASLAuthQuery();
00103
00104 QXmppOutgoingClientPrivate * const d;
00105 };
00106
00107 #endif // QXMPPOUTGOINGCLIENT_H