gloox  1.0.28
Public Member Functions | List of all members
StanzaExtension Class Referenceabstract

#include <stanzaextension.h>

Inheritance diagram for StanzaExtension:
Inheritance graph
[legend]

Public Member Functions

 StanzaExtension (int type)
 
virtual ~StanzaExtension ()
 
virtual StanzaembeddedStanza () const
 
virtual TagembeddedTag () const
 
virtual const std::string & filterString () const =0
 
virtual StanzaExtensionnewInstance (const Tag *tag) const =0
 
virtual Tagtag () const =0
 
virtual StanzaExtensionclone () const =0
 
int extensionType () const
 

Detailed Description

This class abstracts a stanza extension, which is usually an XML child element in a specific namespace inside an XMPP stanza.

This class is the base class for almost all protocol extensions in gloox. As such, it should be used whenever an add-on to the core XMPP spec needs to be made. For simple protocols it may suffice to create a sub-class of StanzaExtension. For protocols which require keeping of state, an additional persistent object acting like a manager may be needed.

A Stanza can be extended by additional namespaced child elements. Obviously, it is not viable to include all the kinds of extensions possible. To avoid hard-coding of such extensions into gloox, StanzaExtension can be used to inform the core of gloox about additional supported extensions without it needing to know about the exact implementation.

Note that a StanzaExtension can be used for both sending and receiving of custom protocols. When receiving, gloox requires an appropriate implementation of the pure virtuals filterString() and newInstance(). To be able to properly use the encapsulation, some getters may be necessary. Note that the object you will be dealing with usually is const.

For sending StanzaExtensions, a custom constructor (as well as some setters, possibly) is needed. Additionally, an implementation of tag() is required.

Author
Jakob Schröter js@ca.nosp@m.maya.nosp@m..net
Since
0.9

Definition at line 203 of file stanzaextension.h.

Constructor & Destructor Documentation

◆ StanzaExtension()

StanzaExtension ( int  type)
inline

Constructs an empty StanzaExtension.

Parameters
typeDesignates the extension's type. It should be one of StanzaExtensionType for built-in extensions, and it should be higher than ExtUser for custom types.

Definition at line 211 of file stanzaextension.h.

◆ ~StanzaExtension()

virtual ~StanzaExtension ( )
inlinevirtual

Virtual destructor.

Definition at line 216 of file stanzaextension.h.

Member Function Documentation

◆ clone()

virtual StanzaExtension* clone ( ) const
pure virtual

◆ embeddedStanza()

virtual Stanza* embeddedStanza ( ) const
inlinevirtual

This function returns the embedded Stanza, if any. You only have to reimplement it if your protocol flow contains embedded Stanzas.

Returns
The embedded Stanza. May be 0.

Reimplemented in Forward, and Carbons.

Definition at line 224 of file stanzaextension.h.

◆ embeddedTag()

virtual Tag* embeddedTag ( ) const
inlinevirtual

This function returns the embedded Tag that the embedded Stanza is based on, if any. You only have to reimplement it if your protocol flow contains embedded Stanzas.

Returns
The embedded Tag. May be 0.

Reimplemented in Session::Jingle, Forward, and Carbons.

Definition at line 232 of file stanzaextension.h.

◆ extensionType()

int extensionType ( ) const
inline

Returns the extension's type.

Returns
The extension's type.

Definition at line 271 of file stanzaextension.h.

◆ filterString()

virtual const std::string& filterString ( ) const
pure virtual

Returns an XPath expression that describes a path to child elements of a stanza that an extension handles.

Returns
The extension's filter string.

Implemented in XHtmlIM, VCardUpdate, VCard, SoftwareVersion, SHIM, Registration::Query, Receipt, Event, OOB, Nickname, MUCRoom::MUCUser, MUCRoom::MUC, MessageEvent, LastActivity::Query, Session::Jingle, IOData, GPGSigned, GPGEncrypted, Forward, FeatureNeg, Error, Disco::Items, Disco::Info, DelayedDelivery, DataForm, ChatState, Carbons, Capabilities, Attention, AMP, and Adhoc::Command.

◆ newInstance()

virtual StanzaExtension* newInstance ( const Tag tag) const
pure virtual

Returns a new Instance of the derived type. Usually, for a derived class FooExtension, the implementation of this function looks like:

StanzaExtension* FooExtension::newInstance( const Tag* tag ) const
{
return new FooExtension( tag );
}
Returns
The derived extension's new instance.

Implemented in XHtmlIM, VCardUpdate, VCard, SoftwareVersion, SHIM, Registration::Query, Receipt, Event, OOB, Nickname, MUCRoom::MUCUser, MUCRoom::MUC, MessageEvent, LastActivity::Query, Session::Jingle, GPGSigned, GPGEncrypted, Forward, FeatureNeg, Error, Disco::Items, Disco::Info, DelayedDelivery, DataForm, ChatState, Carbons, Capabilities, AMP, Adhoc::Command, IOData, and Attention.

◆ tag()

virtual Tag* tag ( ) const
pure virtual

The documentation for this class was generated from the following file: