aboutsummaryrefslogtreecommitdiff
path: root/src/client/QXmppOutgoingClient.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/client/QXmppOutgoingClient.h')
-rw-r--r--src/client/QXmppOutgoingClient.h107
1 files changed, 107 insertions, 0 deletions
diff --git a/src/client/QXmppOutgoingClient.h b/src/client/QXmppOutgoingClient.h
new file mode 100644
index 00000000..4bb00d67
--- /dev/null
+++ b/src/client/QXmppOutgoingClient.h
@@ -0,0 +1,107 @@
+/*
+ * Copyright (C) 2008-2011 The QXmpp developers
+ *
+ * Authors:
+ * Manjeet Dahiya
+ * Jeremy Lainé
+ *
+ * Source:
+ * http://code.google.com/p/qxmpp
+ *
+ * This file is a part of QXmpp library.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ */
+
+
+#ifndef QXMPPOUTGOINGCLIENT_H
+#define QXMPPOUTGOINGCLIENT_H
+
+#include "QXmppClient.h"
+#include "QXmppStanza.h"
+#include "QXmppStream.h"
+
+class QDomElement;
+class QSslError;
+
+class QXmppConfiguration;
+class QXmppPresence;
+class QXmppIq;
+class QXmppMessage;
+
+class QXmppOutgoingClientPrivate;
+
+/// \brief The QXmppOutgoingClient class represents an outgoing XMPP stream
+/// to an XMPP server.
+///
+
+class QXmppOutgoingClient : public QXmppStream
+{
+ Q_OBJECT
+
+public:
+ QXmppOutgoingClient(QObject *parent);
+ ~QXmppOutgoingClient();
+
+ void connectToHost();
+ bool isConnected() const;
+
+ QSslSocket *socket() const { return QXmppStream::socket(); };
+ QXmppStanza::Error::Condition xmppStreamError();
+
+ QXmppConfiguration& configuration();
+
+signals:
+ /// This signal is emitted when an error is encountered.
+ void error(QXmppClient::Error);
+
+ /// This signal is emitted when an element is received.
+ void elementReceived(const QDomElement &element, bool &handled);
+
+ /// This signal is emitted when a presence is received.
+ void presenceReceived(const QXmppPresence&);
+
+ /// This signal is emitted when a message is received.
+ void messageReceived(const QXmppMessage&);
+
+ /// This signal is emitted when an IQ is received.
+ void iqReceived(const QXmppIq&);
+
+protected:
+ /// \cond
+ // Overridable methods
+ virtual void handleStart();
+ virtual void handleStanza(const QDomElement &element);
+ virtual void handleStream(const QDomElement &element);
+ /// \endcond
+
+private slots:
+ void _q_dnsLookupFinished();
+ void socketError(QAbstractSocket::SocketError);
+ void socketSslErrors(const QList<QSslError>&);
+
+ void pingStart();
+ void pingStop();
+ void pingSend();
+ void pingTimeout();
+
+private:
+ void sendAuthDigestMD5ResponseStep1(const QString& challenge);
+ void sendAuthDigestMD5ResponseStep2(const QString& challenge);
+ void sendAuthXFacebookResponse(const QString& challenge);
+ void sendNonSASLAuth(bool plaintext);
+ void sendNonSASLAuthQuery();
+
+ QXmppOutgoingClientPrivate * const d;
+};
+
+#endif // QXMPPOUTGOINGCLIENT_H