PTLib
Version 2.14.3
Main Page
Related Pages
Namespaces
Classes
Files
File List
File Members
All
Classes
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Friends
Macros
Pages
xmpp_c2s.h
Go to the documentation of this file.
1
/*
2
* xmpp_c2s.h
3
*
4
* Extensible Messaging and Presence Protocol (XMPP) Core
5
* Client to Server communication classes
6
*
7
* Portable Windows Library
8
*
9
* Copyright (c) 2004 Reitek S.p.A.
10
*
11
* The contents of this file are subject to the Mozilla Public License
12
* Version 1.0 (the "License"); you may not use this file except in
13
* compliance with the License. You may obtain a copy of the License at
14
* http://www.mozilla.org/MPL/
15
*
16
* Software distributed under the License is distributed on an "AS IS"
17
* basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
18
* the License for the specific language governing rights and limitations
19
* under the License.
20
*
21
* The Original Code is Portable Windows Library.
22
*
23
* The Initial Developer of the Original Code is Post Increment
24
*
25
* Contributor(s): ______________________________________.
26
*
27
* $Revision: 28497 $
28
* $Author: rjongbloed $
29
* $Date: 2012-10-05 22:38:38 +1000 (Fri, 05 Oct 2012) $
30
*/
31
32
#ifndef PTLIB_XMPP_C2S_H
33
#define PTLIB_XMPP_C2S_H
34
35
#ifdef P_USE_PRAGMA
36
#pragma interface
37
#endif
38
39
#include <
ptclib/xmpp.h
>
40
41
#if P_EXPAT
42
43
#include <
ptclib/psasl.h
>
44
#include <
ptlib/sockets.h
>
45
46
48
49
namespace
XMPP
50
{
51
namespace
C2S
52
{
53
56
class
TCPTransport
:
public
Transport
57
{
58
PCLASSINFO(
TCPTransport
,
Transport
);
59
60
public
:
61
TCPTransport
(
const
PString
& hostname);
62
TCPTransport
(
const
PString
& hostname, WORD port);
63
~TCPTransport
();
64
65
const
PString
&
GetServerHost
()
const
{
return
m_Hostname
; }
66
WORD
GetServerPort
()
const
{
return
m_Port
; }
67
68
virtual
PBoolean
Open
();
69
virtual
PBoolean
Close
();
70
71
protected
:
72
PString
m_Hostname
;
73
WORD
m_Port
;
74
PTCPSocket
*
m_Socket
;
75
};
76
77
81
class
StreamHandler
:
public
BaseStreamHandler
82
{
83
PCLASSINFO(
StreamHandler
,
BaseStreamHandler
);
84
85
public
:
86
StreamHandler
(
const
JID
& jid,
const
PString
& pwd,
PBoolean
newAccount =
false
);
87
~StreamHandler
();
88
89
virtual
PBoolean
IsEstablished
()
const
{
return
m_State
==
Established
; }
90
91
virtual
PBoolean
Start
(
Transport
* transport = 0);
92
99
PBoolean
Send
(
Stanza
* stanza);
100
101
void
SetVersion
(WORD major, WORD minor);
102
void
GetVersion
(WORD& major, WORD& minor)
const
;
103
104
const
JID
&
GetJID
()
const
{
return
m_JID
; }
105
111
PNotifierList
&
SessionEstablishedHandlers
() {
return
m_SessionEstablishedHandlers
; }
112
PNotifierList
&
SessionReleasedHandlers
() {
return
m_SessionReleasedHandlers
; }
113
120
PNotifierList
&
ErrorHandlers
() {
return
m_ErrorHandlers
; }
121
PNotifierList
&
MessageHandlers
() {
return
m_MessageHandlers
; }
122
PNotifierList
&
PresenceHandlers
() {
return
m_PresenceHandlers
; }
123
PNotifierList
&
IQHandlers
() {
return
m_IQHandlers
; }
124
129
PNotifierList
&
IQNamespaceHandlers
(
const
PString
& xml_namespace);
130
136
PNotifierList
&
MessageSenderHandlers
(
const
JID
& from);
137
142
virtual
PBoolean
DiscoverItems
(
143
const
PString
& jid,
144
const
PNotifier
& responseHandler,
145
const
PString
& node =
PString::Empty
()
146
);
147
virtual
PBoolean
DiscoverInfo
(
148
const
PString
& jid,
149
const
PNotifier
& responseHandler,
150
const
PString
& node =
PString::Empty
()
151
);
152
153
protected
:
154
virtual
void
OnOpen
(
Stream
& stream, INT);
155
virtual
void
OnClose
(
Stream
& stream, INT);
156
virtual
void
StartRegistration
();
157
virtual
void
StartAuthNegotiation
();
158
159
virtual
void
OnSessionEstablished
();
160
virtual
void
OnSessionReleased
();
161
virtual
void
OnElement
(
PXMLElement
& pdu);
162
virtual
void
OnError
(
PXMLElement
& pdu);
163
164
virtual
void
OnMessage
(
XMPP::Message
& pdu);
165
virtual
void
OnPresence
(
XMPP::Presence
& pdu);
166
virtual
void
OnIQ
(
XMPP::IQ
& pdu);
167
168
// State handlers
169
virtual
void
HandleNullState
(
PXMLElement
& pdu);
170
virtual
void
HandleRegStartedState
(
PXMLElement
& pdu);
171
virtual
void
HandleTLSStartedState
(
PXMLElement
& pdu);
172
#if P_SASL
173
virtual
void
HandleSASLStartedState
(
PXMLElement
& pdu);
174
#endif
175
virtual
void
HandleNonSASLStartedState
(
PXMLElement
& pdu);
176
virtual
void
HandleStreamSentState
(
PXMLElement
& pdu);
177
virtual
void
HandleBindSentState
(
PXMLElement
& pdu);
178
virtual
void
HandleSessionSentState
(
PXMLElement
& pdu);
179
virtual
void
HandleEstablishedState
(
PXMLElement
& pdu);
180
181
virtual
PBoolean
Discover
(
const
PString
& xmlns,
182
const
PString
& jid,
183
const
PNotifier
& responseHandler,
184
const
PString
& node);
185
186
WORD
m_VersionMajor
;
187
WORD
m_VersionMinor
;
188
PString
m_StreamID
;
189
PBoolean
m_NewAccount
;
190
JID
m_JID
;
191
const
PString
m_Password
;
192
#if P_SASL
193
PSASLClient
m_SASL
;
194
PString
m_Mechanism
;
195
#endif
196
PBoolean
m_HasBind
;
197
PBoolean
m_HasSession
;
198
199
PNotifierList
m_SessionEstablishedHandlers
;
200
PNotifierList
m_SessionReleasedHandlers
;
201
PNotifierList
m_ErrorHandlers
;
202
PNotifierList
m_MessageHandlers
;
203
PNotifierList
m_PresenceHandlers
;
204
PNotifierList
m_IQHandlers
;
205
PDictionary<PString, PNotifierList>
m_IQNamespaceHandlers
;
206
PDictionary<JID, PNotifierList>
m_MessageSenderHandlers
;
207
208
PMutex
m_PendingIQsLock
;
209
StanzaList
m_PendingIQs
;
210
211
enum
StreamState
212
{
213
Null
,
214
RegStarted
,
215
TLSStarted
,
216
SASLStarted
,
217
NonSASLStarted
,
218
StreamSent
,
219
BindSent
,
220
SessionSent
,
221
Established
222
};
223
224
virtual
void
SetState
(
StreamState
s);
225
226
StreamState
m_State
;
227
};
228
229
}
// namespace C2S
230
}
// namespace XMPP
231
232
233
#endif // P_EXPAT
234
235
#endif // PTLIB_XMPP_C2S_H
236
237
// End of File ///////////////////////////////////////////////////////////////
include
ptclib
xmpp_c2s.h
Generated on Fri Oct 10 2014 21:15:13 for PTLib by
1.8.3.1