blob: 36a5db54d6a0901a1b62cf9189b33ff0ed1ee0e0 (
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
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
|
<!-- This comment will put IE 6, 7 and 8 in quirks mode -->
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>QXmpp: QXmppStream.h Source File</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javaScript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css"/>
</head>
<body onload='searchBox.OnSelectItem(0);'>
<!-- Generated by Doxygen 1.6.1 -->
<script type="text/javascript"><!--
var searchBox = new SearchBox("searchBox", "search",false,'Search');
--></script>
<div class="navigation" id="top">
<div class="tabs">
<ul>
<li><a href="index.html"><span>Main Page</span></a></li>
<li><a href="modules.html"><span>Modules</span></a></li>
<li><a href="annotated.html"><span>Classes</span></a></li>
<li class="current"><a href="files.html"><span>Files</span></a></li>
<li>
<div id="MSearchBox" class="MSearchBoxInactive">
<img id="MSearchSelect" src="search/search.png"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
alt=""/>
<input type="text" id="MSearchField" value="Search" accesskey="S"
onfocus="searchBox.OnSearchFieldFocus(true)"
onblur="searchBox.OnSearchFieldFocus(false)"
onkeyup="searchBox.OnSearchFieldChange(event)"/>
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
</div>
</li>
</ul>
</div>
<div class="tabs">
<ul>
<li><a href="files.html"><span>File List</span></a></li>
</ul>
</div>
<h1>QXmppStream.h</h1><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">/*</span>
<a name="l00002"></a>00002 <span class="comment"> * Copyright (C) 2008-2010 The QXmpp developers</span>
<a name="l00003"></a>00003 <span class="comment"> *</span>
<a name="l00004"></a>00004 <span class="comment"> * Author:</span>
<a name="l00005"></a>00005 <span class="comment"> * Manjeet Dahiya</span>
<a name="l00006"></a>00006 <span class="comment"> *</span>
<a name="l00007"></a>00007 <span class="comment"> * Source:</span>
<a name="l00008"></a>00008 <span class="comment"> * http://code.google.com/p/qxmpp</span>
<a name="l00009"></a>00009 <span class="comment"> *</span>
<a name="l00010"></a>00010 <span class="comment"> * This file is a part of QXmpp library.</span>
<a name="l00011"></a>00011 <span class="comment"> *</span>
<a name="l00012"></a>00012 <span class="comment"> * This library is free software; you can redistribute it and/or</span>
<a name="l00013"></a>00013 <span class="comment"> * modify it under the terms of the GNU Lesser General Public</span>
<a name="l00014"></a>00014 <span class="comment"> * License as published by the Free Software Foundation; either</span>
<a name="l00015"></a>00015 <span class="comment"> * version 2.1 of the License, or (at your option) any later version.</span>
<a name="l00016"></a>00016 <span class="comment"> *</span>
<a name="l00017"></a>00017 <span class="comment"> * This library is distributed in the hope that it will be useful,</span>
<a name="l00018"></a>00018 <span class="comment"> * but WITHOUT ANY WARRANTY; without even the implied warranty of</span>
<a name="l00019"></a>00019 <span class="comment"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU</span>
<a name="l00020"></a>00020 <span class="comment"> * Lesser General Public License for more details.</span>
<a name="l00021"></a>00021 <span class="comment"> *</span>
<a name="l00022"></a>00022 <span class="comment"> */</span>
<a name="l00023"></a>00023
<a name="l00024"></a>00024
<a name="l00025"></a>00025 <span class="preprocessor">#ifndef QXMPPSTREAM_H</span>
<a name="l00026"></a>00026 <span class="preprocessor"></span><span class="preprocessor">#define QXMPPSTREAM_H</span>
<a name="l00027"></a>00027 <span class="preprocessor"></span>
<a name="l00028"></a>00028 <span class="preprocessor">#include <QObject></span>
<a name="l00029"></a>00029 <span class="preprocessor">#include <QSslSocket></span>
<a name="l00030"></a>00030 <span class="preprocessor">#include "QXmppClient.h"</span>
<a name="l00031"></a>00031 <span class="preprocessor">#include "QXmppLogger.h"</span>
<a name="l00032"></a>00032 <span class="preprocessor">#include "QXmppStanza.h"</span>
<a name="l00033"></a>00033
<a name="l00034"></a>00034 <span class="keyword">class </span>QDomElement;
<a name="l00035"></a>00035
<a name="l00036"></a>00036 <span class="keyword">class </span><a class="code" href="classQXmppClient.html" title="The QXmppClient class is the main class for using QXmpp.">QXmppClient</a>;
<a name="l00037"></a>00037 <span class="keyword">class </span><a class="code" href="classQXmppConfiguration.html" title="The QXmppConfiguration class holds configuration options.">QXmppConfiguration</a>;
<a name="l00038"></a>00038 <span class="keyword">class </span>QXmppPacket;
<a name="l00039"></a>00039 <span class="keyword">class </span><a class="code" href="classQXmppPresence.html" title="The QXmppPresence class represents an XMPP presence stanza.">QXmppPresence</a>;
<a name="l00040"></a>00040 <span class="keyword">class </span><a class="code" href="classQXmppIq.html" title="The QXmppIq class is the base class for all IQs.">QXmppIq</a>;
<a name="l00041"></a>00041 <span class="keyword">class </span>QXmppBind;
<a name="l00042"></a>00042 <span class="keyword">class </span><a class="code" href="classQXmppRosterIq.html" title="The QXmppRosterIq class represents a roster IQ.">QXmppRosterIq</a>;
<a name="l00043"></a>00043 <span class="keyword">class </span><a class="code" href="classQXmppVCard.html" title="Represents the XMPP vCard.">QXmppVCard</a>;
<a name="l00044"></a>00044 <span class="keyword">class </span><a class="code" href="classQXmppMessage.html" title="The QXmppMessage class represents an XMPP message.">QXmppMessage</a>;
<a name="l00045"></a>00045 <span class="keyword">class </span><a class="code" href="classQXmppRpcResponseIq.html" title="The QXmppRpcResponseIq class represents an IQ used to carry an RPC response as specified...">QXmppRpcResponseIq</a>;
<a name="l00046"></a>00046 <span class="keyword">class </span>QXmppRpcErrorIq;
<a name="l00047"></a>00047 <span class="keyword">class </span><a class="code" href="classQXmppArchiveChatIq.html" title="Represents an archive chat as defined by XEP-0136: Message Archiving.">QXmppArchiveChatIq</a>;
<a name="l00048"></a>00048 <span class="keyword">class </span><a class="code" href="classQXmppArchiveListIq.html" title="Represents an archive list as defined by XEP-0136: Message Archiving.">QXmppArchiveListIq</a>;
<a name="l00049"></a>00049 <span class="keyword">class </span><a class="code" href="classQXmppArchivePrefIq.html" title="Represents an archive preference IQ as defined by XEP-0136: Message Archiving.">QXmppArchivePrefIq</a>;
<a name="l00050"></a>00050 <span class="keyword">class </span>QXmppByteStreamIq;
<a name="l00051"></a>00051 <span class="keyword">class </span>QXmppDiscoveryIq;
<a name="l00052"></a>00052 <span class="keyword">class </span>QXmppIbbCloseIq;
<a name="l00053"></a>00053 <span class="keyword">class </span>QXmppIbbDataIq;
<a name="l00054"></a>00054 <span class="keyword">class </span>QXmppIbbOpenIq;
<a name="l00055"></a>00055 <span class="keyword">class </span><a class="code" href="classQXmppJingleIq.html" title="The QXmppJingleIq class represents an IQ used for initiating media sessions as specified...">QXmppJingleIq</a>;
<a name="l00056"></a>00056 <span class="keyword">class </span><a class="code" href="classQXmppMucAdminIq.html" title="The QXmppMucAdminIq class represents a chat room administration IQ as defined by...">QXmppMucAdminIq</a>;
<a name="l00057"></a>00057 <span class="keyword">class </span><a class="code" href="classQXmppMucOwnerIq.html" title="The QXmppMucOwnerIq class represents a chat room configuration IQ as defined by XEP-0045:...">QXmppMucOwnerIq</a>;
<a name="l00058"></a>00058 <span class="keyword">class </span>QXmppStreamInitiationIq;
<a name="l00059"></a>00059 <span class="keyword">class </span>QXmppStreamPrivate;
<a name="l00060"></a>00060 <span class="keyword">class </span><a class="code" href="classQXmppVersionIq.html" title="The QXmppVersionIq class represents an IQ for conveying a software version as defined...">QXmppVersionIq</a>;
<a name="l00061"></a>00061
<a name="l00062"></a>00062 <span class="keyword">class </span>QXmppStream : <span class="keyword">public</span> QObject
<a name="l00063"></a>00063 {
<a name="l00064"></a>00064 Q_OBJECT
<a name="l00065"></a>00065
<a name="l00066"></a>00066 <span class="keyword">public</span>:
<a name="l00067"></a>00067 QXmppStream(QSslSocket *socket, QObject *parent);
<a name="l00068"></a>00068 ~QXmppStream();
<a name="l00069"></a>00069 <span class="keywordtype">void</span> connectToHost();
<a name="l00070"></a>00070 <span class="keywordtype">void</span> disconnectFromHost();
<a name="l00071"></a>00071 <span class="keywordtype">bool</span> isConnected() <span class="keyword">const</span>;
<a name="l00072"></a>00072 <span class="keywordtype">bool</span> sendData(<span class="keyword">const</span> QByteArray&);
<a name="l00073"></a>00073 <span class="keywordtype">bool</span> sendPacket(<span class="keyword">const</span> QXmppPacket&);
<a name="l00074"></a>00074
<a name="l00075"></a>00075 QAbstractSocket::SocketError socketError();
<a name="l00076"></a>00076 QXmppStanza::Error::Condition xmppStreamError();
<a name="l00077"></a>00077
<a name="l00078"></a>00078 <a class="code" href="classQXmppConfiguration.html" title="The QXmppConfiguration class holds configuration options.">QXmppConfiguration</a>& configuration();
<a name="l00079"></a>00079
<a name="l00080"></a>00080 <a class="code" href="classQXmppLogger.html" title="The QXmppLogger class represents a sink for logging messages.">QXmppLogger</a> *logger();
<a name="l00081"></a>00081 <span class="keywordtype">void</span> setLogger(<a class="code" href="classQXmppLogger.html" title="The QXmppLogger class represents a sink for logging messages.">QXmppLogger</a> *logger);
<a name="l00082"></a>00082
<a name="l00083"></a>00083 QXmppElementList presenceExtensions() <span class="keyword">const</span>;
<a name="l00084"></a>00084
<a name="l00085"></a>00085 signals:
<a name="l00086"></a>00086 <span class="comment">// socket host found</span>
<a name="l00087"></a>00087 <span class="keywordtype">void</span> hostFound();
<a name="l00088"></a>00088
<a name="l00089"></a>00089 <span class="comment">// socket connected</span>
<a name="l00090"></a>00090 <span class="keywordtype">void</span> connected();
<a name="l00091"></a>00091
<a name="l00092"></a>00092 <span class="comment">// socket disconnected</span>
<a name="l00093"></a>00093 <span class="keywordtype">void</span> disconnected();
<a name="l00094"></a>00094
<a name="l00095"></a>00095 <span class="comment">// xmpp connected</span>
<a name="l00096"></a>00096 <span class="keywordtype">void</span> xmppConnected();
<a name="l00097"></a>00097
<a name="l00099"></a>00099 <span class="keywordtype">void</span> logMessage(<a class="code" href="classQXmppLogger.html#a932dbbd4f70a1e9c0ff8f452e61fc9b8" title="This enum describes a type of log message.">QXmppLogger::MessageType</a> type, <span class="keyword">const</span> QString &msg);
<a name="l00100"></a>00100
<a name="l00101"></a>00101 <span class="keywordtype">void</span> error(<a class="code" href="classQXmppClient.html#a7c2851d07cc33119752abc6ec8ffc47a">QXmppClient::Error</a>);
<a name="l00102"></a>00102 <span class="keywordtype">void</span> elementReceived(<span class="keyword">const</span> QDomElement &element, <span class="keywordtype">bool</span> &handled);
<a name="l00103"></a>00103 <span class="keywordtype">void</span> presenceReceived(<span class="keyword">const</span> <a class="code" href="classQXmppPresence.html" title="The QXmppPresence class represents an XMPP presence stanza.">QXmppPresence</a>&);
<a name="l00104"></a>00104 <span class="keywordtype">void</span> messageReceived(<span class="keyword">const</span> <a class="code" href="classQXmppMessage.html" title="The QXmppMessage class represents an XMPP message.">QXmppMessage</a>&);
<a name="l00105"></a>00105 <span class="keywordtype">void</span> iqReceived(<span class="keyword">const</span> <a class="code" href="classQXmppIq.html" title="The QXmppIq class is the base class for all IQs.">QXmppIq</a>&);
<a name="l00106"></a>00106 <span class="keywordtype">void</span> rosterIqReceived(<span class="keyword">const</span> <a class="code" href="classQXmppRosterIq.html" title="The QXmppRosterIq class represents a roster IQ.">QXmppRosterIq</a>&);
<a name="l00107"></a>00107 <span class="keywordtype">void</span> vCardIqReceived(<span class="keyword">const</span> <a class="code" href="classQXmppVCard.html" title="Represents the XMPP vCard.">QXmppVCard</a>&);
<a name="l00108"></a>00108
<a name="l00109"></a>00109 <span class="keywordtype">void</span> rpcCallInvoke(<span class="keyword">const</span> <a class="code" href="classQXmppRpcInvokeIq.html" title="The QXmppRpcInvokeIq class represents an IQ used to carry an RPC invocation as specified...">QXmppRpcInvokeIq</a> &invoke);
<a name="l00110"></a>00110 <span class="keywordtype">void</span> rpcCallResponse(<span class="keyword">const</span> <a class="code" href="classQXmppRpcResponseIq.html" title="The QXmppRpcResponseIq class represents an IQ used to carry an RPC response as specified...">QXmppRpcResponseIq</a>& result);
<a name="l00111"></a>00111 <span class="keywordtype">void</span> rpcCallError(<span class="keyword">const</span> QXmppRpcErrorIq &err);
<a name="l00112"></a>00112
<a name="l00113"></a>00113 <span class="keywordtype">void</span> archiveChatIqReceived(<span class="keyword">const</span> <a class="code" href="classQXmppArchiveChatIq.html" title="Represents an archive chat as defined by XEP-0136: Message Archiving.">QXmppArchiveChatIq</a>&);
<a name="l00114"></a>00114 <span class="keywordtype">void</span> archiveListIqReceived(<span class="keyword">const</span> <a class="code" href="classQXmppArchiveListIq.html" title="Represents an archive list as defined by XEP-0136: Message Archiving.">QXmppArchiveListIq</a>&);
<a name="l00115"></a>00115 <span class="keywordtype">void</span> archivePrefIqReceived(<span class="keyword">const</span> <a class="code" href="classQXmppArchivePrefIq.html" title="Represents an archive preference IQ as defined by XEP-0136: Message Archiving.">QXmppArchivePrefIq</a>&);
<a name="l00116"></a>00116
<a name="l00117"></a>00117 <span class="keywordtype">void</span> discoveryIqReceived(<span class="keyword">const</span> QXmppDiscoveryIq&);
<a name="l00118"></a>00118
<a name="l00119"></a>00119 <span class="keywordtype">void</span> byteStreamIqReceived(<span class="keyword">const</span> QXmppByteStreamIq&);
<a name="l00120"></a>00120 <span class="keywordtype">void</span> ibbCloseIqReceived(<span class="keyword">const</span> QXmppIbbCloseIq&);
<a name="l00121"></a>00121 <span class="keywordtype">void</span> ibbDataIqReceived(<span class="keyword">const</span> QXmppIbbDataIq&);
<a name="l00122"></a>00122 <span class="keywordtype">void</span> ibbOpenIqReceived(<span class="keyword">const</span> QXmppIbbOpenIq&);
<a name="l00123"></a>00123 <span class="keywordtype">void</span> streamInitiationIqReceived(<span class="keyword">const</span> QXmppStreamInitiationIq&);
<a name="l00124"></a>00124
<a name="l00125"></a>00125 <span class="comment">// XEP-0045: Multi-User Chat</span>
<a name="l00126"></a>00126 <span class="keywordtype">void</span> mucAdminIqReceived(<span class="keyword">const</span> <a class="code" href="classQXmppMucAdminIq.html" title="The QXmppMucAdminIq class represents a chat room administration IQ as defined by...">QXmppMucAdminIq</a>&);
<a name="l00127"></a>00127 <span class="keywordtype">void</span> mucOwnerIqReceived(<span class="keyword">const</span> <a class="code" href="classQXmppMucOwnerIq.html" title="The QXmppMucOwnerIq class represents a chat room configuration IQ as defined by XEP-0045:...">QXmppMucOwnerIq</a>&);
<a name="l00128"></a>00128
<a name="l00129"></a>00129 <span class="comment">// XEP-0166: Jingle</span>
<a name="l00130"></a>00130 <span class="keywordtype">void</span> jingleIqReceived(<span class="keyword">const</span> <a class="code" href="classQXmppJingleIq.html" title="The QXmppJingleIq class represents an IQ used for initiating media sessions as specified...">QXmppJingleIq</a>&);
<a name="l00131"></a>00131
<a name="l00132"></a>00132 <span class="keyword">protected</span>:
<a name="l00133"></a>00133 <span class="comment">// Logging helpers</span>
<a name="l00134"></a>00134 <span class="keywordtype">void</span> debug(<span class="keyword">const</span> QString&);
<a name="l00135"></a>00135 <span class="keywordtype">void</span> info(<span class="keyword">const</span> QString&);
<a name="l00136"></a>00136 <span class="keywordtype">void</span> warning(<span class="keyword">const</span> QString&);
<a name="l00137"></a>00137
<a name="l00138"></a>00138 <span class="comment">// Overridable methods</span>
<a name="l00139"></a>00139 <span class="keyword">virtual</span> <span class="keywordtype">void</span> handleStanza(<span class="keyword">const</span> QDomElement &element);
<a name="l00140"></a>00140 <span class="keyword">virtual</span> <span class="keywordtype">void</span> handleStream(<span class="keyword">const</span> QDomElement &element);
<a name="l00141"></a>00141 <span class="keyword">virtual</span> <span class="keywordtype">bool</span> sendStartStream();
<a name="l00142"></a>00142 <span class="keyword">virtual</span> <span class="keywordtype">bool</span> sendEndStream();
<a name="l00143"></a>00143
<a name="l00144"></a>00144 <span class="keyword">private</span> slots:
<a name="l00145"></a>00145 <span class="keywordtype">void</span> socketHostFound();
<a name="l00146"></a>00146 <span class="keywordtype">void</span> socketReadReady();
<a name="l00147"></a>00147 <span class="keywordtype">void</span> socketEncrypted();
<a name="l00148"></a>00148 <span class="keywordtype">void</span> socketConnected();
<a name="l00149"></a>00149 <span class="keywordtype">void</span> socketDisconnected();
<a name="l00150"></a>00150 <span class="keywordtype">void</span> socketError(QAbstractSocket::SocketError);
<a name="l00151"></a>00151 <span class="keywordtype">void</span> socketSslErrors(<span class="keyword">const</span> QList<QSslError>&);
<a name="l00152"></a>00152
<a name="l00153"></a>00153 <span class="keywordtype">void</span> pingStart();
<a name="l00154"></a>00154 <span class="keywordtype">void</span> pingStop();
<a name="l00155"></a>00155 <span class="keywordtype">void</span> pingSend();
<a name="l00156"></a>00156 <span class="keywordtype">void</span> pingTimeout();
<a name="l00157"></a>00157
<a name="l00158"></a>00158 <span class="keyword">private</span>:
<a name="l00159"></a>00159 QXmppDiscoveryIq capabilities() <span class="keyword">const</span>;
<a name="l00160"></a>00160 <span class="keywordtype">void</span> flushDataBuffer();
<a name="l00161"></a>00161 <span class="keywordtype">void</span> parser(<span class="keyword">const</span> QByteArray&);
<a name="l00162"></a>00162 <span class="keywordtype">void</span> sendNonSASLAuth(<span class="keywordtype">bool</span> plaintext);
<a name="l00163"></a>00163 <span class="keywordtype">void</span> sendNonSASLAuthQuery();
<a name="l00164"></a>00164 <span class="keywordtype">void</span> sendAuthDigestMD5ResponseStep1(<span class="keyword">const</span> QString& challenge);
<a name="l00165"></a>00165 <span class="keywordtype">void</span> sendAuthDigestMD5ResponseStep2();
<a name="l00166"></a>00166 <span class="keywordtype">void</span> sendBindIQ();
<a name="l00167"></a>00167 <span class="keywordtype">void</span> sendSessionIQ();
<a name="l00168"></a>00168
<a name="l00169"></a>00169 QXmppStreamPrivate * <span class="keyword">const</span> d;
<a name="l00170"></a>00170 };
<a name="l00171"></a>00171
<a name="l00172"></a>00172 <span class="preprocessor">#endif // QXMPPSTREAM_H</span>
</pre></div></div>
<!--- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark"> </span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark"> </span>Classes</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark"> </span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark"> </span>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark"> </span>Enumerator</a></div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<hr size="1"/><address style="text-align: right;"><small>Generated on Sun Aug 22 00:44:23 2010 for QXmpp by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.1 </small></address>
</body>
</html>
|