blob: 1e217c28ab52396ad3979e7832290e3092890773 (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
|
/*
* Copyright (C) 2008-2010 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 QXmppClient;
class QXmppConfiguration;
class QXmppPacket;
class QXmppPresence;
class QXmppIq;
class QXmppBind;
class QXmppRosterIq;
class QXmppVCard;
class QXmppMessage;
class QXmppRpcResponseIq;
class QXmppRpcErrorIq;
class QXmppArchiveChatIq;
class QXmppArchiveListIq;
class QXmppArchivePrefIq;
class QXmppByteStreamIq;
class QXmppDiscoveryIq;
class QXmppIbbCloseIq;
class QXmppIbbDataIq;
class QXmppIbbOpenIq;
class QXmppJingleIq;
class QXmppMucAdminIq;
class QXmppMucOwnerIq;
class QXmppStreamInitiationIq;
class QXmppVersionIq;
class QXmppOutgoingClientPrivate;
/// \brief The QXmppStream class represents an outgoing client-to-server
/// stream.
///
class QXmppOutgoingClient : public QXmppStream
{
Q_OBJECT
public:
QXmppOutgoingClient(QObject *parent);
~QXmppOutgoingClient();
void connectToHost();
QAbstractSocket::SocketError socketError();
QXmppStanza::Error::Condition xmppStreamError();
QXmppConfiguration& configuration();
QXmppElementList presenceExtensions() const;
signals:
void error(QXmppClient::Error);
void presenceReceived(const QXmppPresence&);
void messageReceived(const QXmppMessage&);
void iqReceived(const QXmppIq&);
void rosterIqReceived(const QXmppRosterIq&);
// XEP-0009: Jabber-RPC
void rpcCallInvoke(const QXmppRpcInvokeIq &invoke);
void rpcCallResponse(const QXmppRpcResponseIq& result);
void rpcCallError(const QXmppRpcErrorIq &err);
// XEP-0030: Service Discovery
void discoveryIqReceived(const QXmppDiscoveryIq&);
// XEP-0047 In-Band Bytestreams
void ibbCloseIqReceived(const QXmppIbbCloseIq&);
void ibbDataIqReceived(const QXmppIbbDataIq&);
void ibbOpenIqReceived(const QXmppIbbOpenIq&);
// XEP-0045: Multi-User Chat
void mucAdminIqReceived(const QXmppMucAdminIq&);
void mucOwnerIqReceived(const QXmppMucOwnerIq&);
// XEP-0054: vcard-temp
void vCardIqReceived(const QXmppVCard&);
// XEP-0065: SOCKS5 Bytestreams
void byteStreamIqReceived(const QXmppByteStreamIq&);
// XEP-0095: Stream Initiation
void streamInitiationIqReceived(const QXmppStreamInitiationIq&);
// XEP-0136: Message Archiving
void archiveChatIqReceived(const QXmppArchiveChatIq&);
void archiveListIqReceived(const QXmppArchiveListIq&);
void archivePrefIqReceived(const QXmppArchivePrefIq&);
// XEP-0166: Jingle
void jingleIqReceived(const QXmppJingleIq&);
protected:
// Overridable methods
virtual void handleStart();
virtual void handleStanza(const QDomElement &element);
virtual void handleStream(const QDomElement &element);
private slots:
void socketError(QAbstractSocket::SocketError);
void socketSslErrors(const QList<QSslError>&);
void pingStart();
void pingStop();
void pingSend();
void pingTimeout();
private:
QXmppDiscoveryIq capabilities() const;
void sendAuthDigestMD5ResponseStep1(const QString& challenge);
void sendAuthDigestMD5ResponseStep2();
void sendNonSASLAuth(bool plaintext);
void sendNonSASLAuthQuery();
QXmppOutgoingClientPrivate * const d;
};
#endif // QXMPPOUTGOINGCLIENT_H
|