PTLib Version 2.12.9

- Main Page
- Related Pages
- Namespaces
- Classes
- Files

- Class List
- Class Index
- Class Hierarchy
- Class Members

All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
Public Member Functions | Protected Types | Protected Member Functions | Protected Attributes | List of all members
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:
[legend]
Collaboration diagram for XMPP::C2S::StreamHandler:
[legend]

## 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. More...
void | SetVersion (WORD major, WORD minor)
void | GetVersion (WORD &major, WORD &minor) const
const JID & | GetJID () const
PNotifierList & | SessionEstablishedHandlers ()
    These notifier lists after when a client session is
established (i.e. More...
PNotifierList & | SessionReleasedHandlers ()
PNotifierList & | ErrorHandlers ()
    These notifier lists are fired when a XMPP stanza or a
stream error is received. More...
PNotifierList & | MessageHandlers ()
PNotifierList & | PresenceHandlers ()
PNotifierList & | IQHandlers ()
PNotifierList & | IQNamespaceHandlers (const PString &xml_namespace)
| A notifier list for a specific namespace. More...
PNotifierList & | MessageSenderHandlers (const JID &from)
| A notifier list for a particular message originator. More...
virtual PBoolean | DiscoverItems (const PString &jid, const PNotifier &responseHandler, const PString &node=PString::Empty())
| JEP-0030 Service Discovery access methods. More...
virtual PBoolean | DiscoverInfo (const PString &jid, const PNotifier &responseHandler, const PString &node=PString::Empty())
Public Member Functions inherited from XMPP::BaseStreamHandler
| BaseStreamHandler ()
| ~BaseStreamHandler ()
virtual PBoolean | Stop (const PString &error=PString::Empty())
void | SetAutoReconnect (PBoolean b=true, long timeout=1000)
PNotifierList & | ElementHandlers ()
Stream * | GetStream ()
virtual PBoolean | Write (const void *buf, PINDEX len)
virtual PBoolean | Write (const PString &data)
virtual PBoolean | Write (const PXML &pdu)
virtual void | Main ()
| User override function for the main execution routine of the thread. More...
Public Member Functions inherited from PThread
bool | IsAutoDelete () const
int | PXBlockOnChildTerminate (int pid, const PTimeInterval &timeout)
int | PXBlockOnIO (int handle, int type, const PTimeInterval &timeout)
void | PXAbortBlock () const
void | PrintOn (ostream &strm) const
| Standard stream print function. More...
| PThread (PINDEX stack, AutoDeleteFlag deletion=AutoDeleteThread, Priority priorityLevel=NormalPriority, const PString &threadName=PString::Empty())
| Create a new thread instance. More...
| ~PThread ()
| Destroy the thread, this simply calls the `Terminate()` function with all its restrictions and penalties. More...
virtual void | Restart ()
| Restart a terminated thread using the same stack priority etc that was current when the thread terminated. More...
virtual void | Terminate ()
| Terminate the thread. More...
virtual PBoolean | IsTerminated () const
| Determine if the thread has been terminated or ran to completion. More...
void | WaitForTermination () const
| Block and wait for the thread to terminate. More...
PBoolean | WaitForTermination (const PTimeInterval &maxWait) const
| Block and wait for the thread to terminate. More...
virtual void | Suspend (PBoolean susp=true)
| Suspend or resume the thread. More...
virtual void | Resume ()
| Resume thread execution, this is identical to `Suspend(false)`. More...
virtual PBoolean | IsSuspended () const
| Determine if the thread is currently suspended. More...
virtual void | SetPriority (Priority priorityLevel)
| Set the priority of the thread relative to other threads in the current process. More...
virtual Priority | GetPriority () const
| Get the current priority of the thread in the current process. More...
virtual void | SetAutoDelete (AutoDeleteFlag deletion=AutoDeleteThread)
| Set the flag indicating thread object is to be automatically deleted when the thread ends. More...
void | SetNoAutoDelete ()
| Reet the flag indicating thread object is to be automatically deleted when the thread ends. More...
virtual PString | GetThreadName () const
| Get the name of the thread. More...
virtual void | SetThreadName (const PString &name)
| Change the name of the thread. More...
virtual PThreadIdentifier | GetThreadId () const
| Get operating system specific thread identifier for this thread. More...
bool | GetTimes (Times &times)
| Get the thread execution times. More...
Public Member Functions inherited from PObject
unsigned | GetTraceContextIdentifier () const
| Get PTRACE context identifier. More...
void | SetTraceContextIdentifier (unsigned id)
void | GetTraceContextIdentifier (PObject &obj)
void | GetTraceContextIdentifier (PObject *obj)
void | SetTraceContextIdentifier (const PObject &obj)
void | SetTraceContextIdentifier (const PObject *obj)
virtual | ~PObject ()
virtual PObject * | Clone () const
| Create a copy of the class on the heap. More...
template<class CLS >
CLS * | CloneAs () const
| As for Clone() but converts to specified type. More...
virtual PINDEX | HashFunction () const
| This function yields a hash value required by the `PDictionary` class. More...
virtual const char * | GetClass (unsigned ancestor=0) const
| Get the current dynamic type of the object instance. More...
PBoolean | IsClass (const char *cls) const
virtual PBoolean | InternalIsDescendant (const char *clsName) const
| Determine if the dynamic type of the current instance is a descendent of the specified class. More...
__inline const PObject * | PTraceObjectInstance () const
virtual Comparison | Compare (const PObject &obj) const
| Compare the two objects and return their relative rank. More...
virtual Comparison | CompareObjectMemoryDirect (const PObject &obj) const
| Determine the byte wise comparison of two objects. More...
bool | operator== (const PObject &obj) const
| Compare the two objects. More...
bool | operator!= (const PObject &obj) const
| Compare the two objects. More...
bool | operator< (const PObject &obj) const
| Compare the two objects. More...
bool | operator> (const PObject &obj) const
| Compare the two objects. More...
bool | operator<= (const PObject &obj) const
| Compare the two objects. More...
bool | operator>= (const PObject &obj) const
| Compare the two objects. More...
virtual void | ReadFrom (istream &strm)
| Input the contents of the object from the stream. More...

## Protected Types
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, const PNotifier &responseHandler, const PString &node)
virtual void | SetState (StreamState s)
Protected Member Functions inherited from XMPP::BaseStreamHandler
| PDECLARE_NOTIFIER (Stream, BaseStreamHandler, OnOpen)
| PDECLARE_NOTIFIER (Stream, BaseStreamHandler, OnClose)

## 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, PNotifierList > | m_IQNamespaceHandlers
PDictionary< JID, PNotifierList > | m_MessageSenderHandlers
PMutex | m_PendingIQsLock
StanzaList | m_PendingIQs
StreamState | m_State
Protected Attributes inherited from XMPP::BaseStreamHandler
Stream * | m_Stream
PBoolean | m_AutoReconnect
PTimeInterval | m_ReconnectTimeout
PNotifierList | m_ElementHandlers
Protected Attributes inherited from PThread
enum PThread::Type | m_type
PINDEX | m_originalStackSize
PString | m_threadName
PMutex | m_threadNameMutex
PThreadIdentifier | m_threadId
LocalStorageList | m_localStorage
Protected Attributes inherited from PObject
unsigned | m_traceContextIdentifier

## Additional Inherited Members
Public Types inherited from PThread
enum | Priority { LowestPriority, LowPriority, NormalPriority, HighPriority, HighestPriority, NumPriorities }
| Codes for thread priorities. More...
enum | AutoDeleteFlag { AutoDeleteThread, NoAutoDeleteThread }
| Codes for thread autodelete flag. More...
Public Types inherited from PObject
enum | Comparison { LessThan = -1, EqualTo = 0, GreaterThan = 1 }
| Result of the comparison operation performed by the `Compare()` function. More...
Static Public Member Functions inherited from PThread
static void | Sleep (const PTimeInterval &delay)
| Suspend the current thread for the specified amount of time. More...
static PThreadIdentifier | GetCurrentThreadId ()
static PThread * | Current ()
| Get the currently running thread object instance. More...
static void | Yield ()
| Yield to another thread without blocking. More...
static PThread * | Create (const PNotifier &notifier, INT parameter=0, AutoDeleteFlag deletion=AutoDeleteThread, Priority priorityLevel=NormalPriority, const PString &threadName=PString::Empty(), PINDEX stackSize=0)
| Create a simple thread executing the specified notifier. More...
static PThread * | Create (const PNotifier &notifier, const PString &threadName)
Static Public Member Functions inherited from PObject
static const char * | Class ()
| Get the name of the class as a C string. More...
static __inline const PObject * | PTraceObjectInstance (const char *)
static __inline const PObject * | PTraceObjectInstance (const PObject *obj)
static Comparison | InternalCompareObjectMemoryDirect (const PObject *obj1, const PObject *obj2, PINDEX size)
| Internal function caled from CompareObjectMemoryDirect() More...
Friends inherited from PObject

## 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,
|  | const PNotifier & | responseHandler,
|  | const PString & | node
| ) |  |
| protected virtual

virtual PBoolean XMPP::C2S::StreamHandler::DiscoverInfo | ( | const PString & | jid,
|  | const 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,
|  | const 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

References m_ErrorHandlers.

const JID& XMPP::C2S::StreamHandler::GetJID | ( |  | ) | const
| inline

References m_JID.

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

References m_IQHandlers.

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

References Established, and m_State.

PNotifierList& XMPP::C2S::StreamHandler::MessageHandlers | ( |  | ) |
| inline

References m_MessageHandlers.

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

References m_PresenceHandlers.

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

References m_SessionEstablishedHandlers.

PNotifierList& XMPP::C2S::StreamHandler::SessionReleasedHandlers | ( |  | ) |
| inline

References m_SessionReleasedHandlers.

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

Referenced by ErrorHandlers().

PBoolean XMPP::C2S::StreamHandler::m_HasBind
| protected

PBoolean XMPP::C2S::StreamHandler::m_HasSession
| protected

PNotifierList XMPP::C2S::StreamHandler::m_IQHandlers
| protected

Referenced by IQHandlers().

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

JID XMPP::C2S::StreamHandler::m_JID
| protected

Referenced by GetJID().

PNotifierList XMPP::C2S::StreamHandler::m_MessageHandlers
| protected

Referenced by MessageHandlers().

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

Referenced by PresenceHandlers().

PNotifierList XMPP::C2S::StreamHandler::m_SessionEstablishedHandlers
| protected

Referenced by SessionEstablishedHandlers().

PNotifierList XMPP::C2S::StreamHandler::m_SessionReleasedHandlers
| protected

Referenced by SessionReleasedHandlers().

StreamState XMPP::C2S::StreamHandler::m_State
| protected

Referenced by IsEstablished().

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:

- xmpp_c2s.h