XMPP::C2S::StreamHandler Class Reference

This class handles the client side of a C2S (Client to Server) XMPP stream. More...

#include <xmpp_c2s.h>

Inheritance diagram for XMPP::C2S::StreamHandler:

XMPP::BaseStreamHandler PThread PObject List of all members.

Public Member Functions

 StreamHandler (const JID &jid, const PString &pwd, PBoolean newAccount=false)
 ~StreamHandler ()
virtual PBoolean IsEstablished () const
virtual PBoolean Start (Transport *transport=0)
PBoolean Send (Stanza *stanza)
 Request the delivery of the specified stanza NOTE: the StreamHandler takes ownership of the stanza and will take care of deleting it.
void SetVersion (WORD major, WORD minor)
void GetVersion (WORD &major, WORD &minor) const
const JIDGetJID () const
PNotifierListSessionEstablishedHandlers ()
 These notifier lists after when a client session is established (i.e.
PNotifierListSessionReleasedHandlers ()
PNotifierListErrorHandlers ()
 These notifier lists are fired when a XMPP stanza or a stream error is received.
PNotifierListMessageHandlers ()
PNotifierListPresenceHandlers ()
PNotifierListIQHandlers ()
PNotifierListIQNamespaceHandlers (const PString &xml_namespace)
 A notifier list for a specific namespace.
PNotifierListMessageSenderHandlers (const JID &from)
 A notifier list for a particular message originator.
virtual PBoolean DiscoverItems (const PString &jid, PNotifier *responseHandler, const PString &node=PString::Empty())
 JEP-0030 Service Discovery access methods.
virtual PBoolean DiscoverInfo (const PString &jid, PNotifier *responseHandler, const PString &node=PString::Empty())

Protected Types

 Null
 RegStarted
 TLSStarted
 SASLStarted
 NonSASLStarted
 non SASL authentication (JEP-0078)
 StreamSent
 BindSent
 SessionSent
 Established
enum  StreamState {
  Null, RegStarted, TLSStarted, SASLStarted,
  NonSASLStarted, StreamSent, BindSent, SessionSent,
  Established
}

Protected Member Functions

virtual void OnOpen (Stream &stream, INT)
virtual void OnClose (Stream &stream, INT)
virtual void StartRegistration ()
virtual void StartAuthNegotiation ()
virtual void OnSessionEstablished ()
virtual void OnSessionReleased ()
virtual void OnElement (PXML &pdu)
virtual void OnError (PXML &pdu)
virtual void OnMessage (XMPP::Message &pdu)
virtual void OnPresence (XMPP::Presence &pdu)
virtual void OnIQ (XMPP::IQ &pdu)
virtual void HandleNullState (PXML &pdu)
virtual void HandleRegStartedState (PXML &pdu)
virtual void HandleTLSStartedState (PXML &pdu)
virtual void HandleNonSASLStartedState (PXML &pdu)
virtual void HandleStreamSentState (PXML &pdu)
virtual void HandleBindSentState (PXML &pdu)
virtual void HandleSessionSentState (PXML &pdu)
virtual void HandleEstablishedState (PXML &pdu)
virtual PBoolean Discover (const PString &xmlns, const PString &jid, PNotifier *responseHandler, const PString &node)
virtual void SetState (StreamState s)

Protected Attributes

WORD m_VersionMajor
WORD m_VersionMinor
PString m_StreamID
PBoolean m_NewAccount
JID m_JID
const PString m_Password
PBoolean m_HasBind
PBoolean m_HasSession
PNotifierList m_SessionEstablishedHandlers
PNotifierList m_SessionReleasedHandlers
PNotifierList m_ErrorHandlers
PNotifierList m_MessageHandlers
PNotifierList m_PresenceHandlers
PNotifierList m_IQHandlers
PDictionary< PString, PNotifierListm_IQNamespaceHandlers
PDictionary< JID, PNotifierListm_MessageSenderHandlers
PMutex m_PendingIQsLock
StanzaList m_PendingIQs
StreamState m_State

Detailed Description

This class handles the client side of a C2S (Client to Server) XMPP stream.


Member Enumeration Documentation

enum XMPP::C2S::StreamHandler::StreamState [protected]

Enumerator:
Null 
RegStarted 
TLSStarted 
SASLStarted 
NonSASLStarted  non SASL authentication (JEP-0078)
StreamSent 
BindSent 
SessionSent 
Established 


Constructor & Destructor Documentation

XMPP::C2S::StreamHandler::StreamHandler ( const JID jid,
const PString pwd,
PBoolean  newAccount = false 
)

XMPP::C2S::StreamHandler::~StreamHandler (  ) 


Member Function Documentation

virtual PBoolean XMPP::C2S::StreamHandler::Discover ( const PString xmlns,
const PString jid,
PNotifier responseHandler,
const PString node 
) [protected, virtual]

virtual PBoolean XMPP::C2S::StreamHandler::DiscoverInfo ( const PString jid,
PNotifier responseHandler,
const PString node = PString::Empty() 
) [virtual]

Parameters:
jid  JID to which a query will be send
responseHandler  Handler function for responses
node  Optional node

virtual PBoolean XMPP::C2S::StreamHandler::DiscoverItems ( const PString jid,
PNotifier responseHandler,
const PString node = PString::Empty() 
) [virtual]

JEP-0030 Service Discovery access methods.

The response handler will receive a PIQ stanza (a smart pointer to a XMPP::IQ)

Parameters:
jid  JID to which a query will be send
responseHandler  Handler function for responses
node  Optional node

PNotifierList& XMPP::C2S::StreamHandler::ErrorHandlers (  )  [inline]

These notifier lists are fired when a XMPP stanza or a stream error is received.

For the notifier lists to be fired the stream must be already in the established state (i.e. after the bind and the session state). The parameter passed to the notifiers is a reference to the received pdu

const JID& XMPP::C2S::StreamHandler::GetJID (  )  const [inline]

void XMPP::C2S::StreamHandler::GetVersion ( WORD &  major,
WORD &  minor 
) const

virtual void XMPP::C2S::StreamHandler::HandleBindSentState ( PXML pdu  )  [protected, virtual]

virtual void XMPP::C2S::StreamHandler::HandleEstablishedState ( PXML pdu  )  [protected, virtual]

virtual void XMPP::C2S::StreamHandler::HandleNonSASLStartedState ( PXML pdu  )  [protected, virtual]

virtual void XMPP::C2S::StreamHandler::HandleNullState ( PXML pdu  )  [protected, virtual]

virtual void XMPP::C2S::StreamHandler::HandleRegStartedState ( PXML pdu  )  [protected, virtual]

virtual void XMPP::C2S::StreamHandler::HandleSessionSentState ( PXML pdu  )  [protected, virtual]

virtual void XMPP::C2S::StreamHandler::HandleStreamSentState ( PXML pdu  )  [protected, virtual]

virtual void XMPP::C2S::StreamHandler::HandleTLSStartedState ( PXML pdu  )  [protected, virtual]

PNotifierList& XMPP::C2S::StreamHandler::IQHandlers (  )  [inline]

PNotifierList& XMPP::C2S::StreamHandler::IQNamespaceHandlers ( const PString xml_namespace  ) 

A notifier list for a specific namespace.

The list will be fired only upon receiving an IQ with the child element of the specified namespace

virtual PBoolean XMPP::C2S::StreamHandler::IsEstablished (  )  const [inline, virtual]

PNotifierList& XMPP::C2S::StreamHandler::MessageHandlers (  )  [inline]

PNotifierList& XMPP::C2S::StreamHandler::MessageSenderHandlers ( const JID from  ) 

A notifier list for a particular message originator.

The list will be fired only upon receiving a message from the specified jid. NOTE: if a matching notifier list is found and it's not emnpty, the generic MessageHandlers list IS NOT fired.

virtual void XMPP::C2S::StreamHandler::OnClose ( Stream stream,
INT   
) [protected, virtual]

virtual void XMPP::C2S::StreamHandler::OnElement ( PXML pdu  )  [protected, virtual]

Reimplemented from XMPP::BaseStreamHandler.

virtual void XMPP::C2S::StreamHandler::OnError ( PXML pdu  )  [protected, virtual]

virtual void XMPP::C2S::StreamHandler::OnIQ ( XMPP::IQ pdu  )  [protected, virtual]

virtual void XMPP::C2S::StreamHandler::OnMessage ( XMPP::Message pdu  )  [protected, virtual]

virtual void XMPP::C2S::StreamHandler::OnOpen ( Stream stream,
INT   
) [protected, virtual]

virtual void XMPP::C2S::StreamHandler::OnPresence ( XMPP::Presence pdu  )  [protected, virtual]

virtual void XMPP::C2S::StreamHandler::OnSessionEstablished (  )  [protected, virtual]

virtual void XMPP::C2S::StreamHandler::OnSessionReleased (  )  [protected, virtual]

PNotifierList& XMPP::C2S::StreamHandler::PresenceHandlers (  )  [inline]

PBoolean XMPP::C2S::StreamHandler::Send ( Stanza stanza  ) 

Request the delivery of the specified stanza NOTE: the StreamHandler takes ownership of the stanza and will take care of deleting it.

BIG NOTE: use this method and not Write() if you want to get a notification when an answer to an iq arrives

PNotifierList& XMPP::C2S::StreamHandler::SessionEstablishedHandlers (  )  [inline]

These notifier lists after when a client session is established (i.e.

after the handshake and authentication steps are completed) or is released. The parameter passed to the notifiers is a reference to the stream handler

PNotifierList& XMPP::C2S::StreamHandler::SessionReleasedHandlers (  )  [inline]

virtual void XMPP::C2S::StreamHandler::SetState ( StreamState  s  )  [protected, virtual]

void XMPP::C2S::StreamHandler::SetVersion ( WORD  major,
WORD  minor 
)

virtual PBoolean XMPP::C2S::StreamHandler::Start ( Transport transport = 0  )  [virtual]

Reimplemented from XMPP::BaseStreamHandler.

virtual void XMPP::C2S::StreamHandler::StartAuthNegotiation (  )  [protected, virtual]

virtual void XMPP::C2S::StreamHandler::StartRegistration (  )  [protected, virtual]


Member Data Documentation

PNotifierList XMPP::C2S::StreamHandler::m_ErrorHandlers [protected]

PBoolean XMPP::C2S::StreamHandler::m_HasBind [protected]

PBoolean XMPP::C2S::StreamHandler::m_HasSession [protected]

PNotifierList XMPP::C2S::StreamHandler::m_IQHandlers [protected]

PDictionary<PString, PNotifierList> XMPP::C2S::StreamHandler::m_IQNamespaceHandlers [protected]

JID XMPP::C2S::StreamHandler::m_JID [protected]

PNotifierList XMPP::C2S::StreamHandler::m_MessageHandlers [protected]

PDictionary<JID, PNotifierList> XMPP::C2S::StreamHandler::m_MessageSenderHandlers [protected]

PBoolean XMPP::C2S::StreamHandler::m_NewAccount [protected]

const PString XMPP::C2S::StreamHandler::m_Password [protected]

StanzaList XMPP::C2S::StreamHandler::m_PendingIQs [protected]

PMutex XMPP::C2S::StreamHandler::m_PendingIQsLock [protected]

PNotifierList XMPP::C2S::StreamHandler::m_PresenceHandlers [protected]

PNotifierList XMPP::C2S::StreamHandler::m_SessionEstablishedHandlers [protected]

PNotifierList XMPP::C2S::StreamHandler::m_SessionReleasedHandlers [protected]

StreamState XMPP::C2S::StreamHandler::m_State [protected]

PString XMPP::C2S::StreamHandler::m_StreamID [protected]

WORD XMPP::C2S::StreamHandler::m_VersionMajor [protected]

WORD XMPP::C2S::StreamHandler::m_VersionMinor [protected]


The documentation for this class was generated from the following file:
Generated on Fri Oct 14 01:44:14 2011 for PTLib by  doxygen 1.4.7