gloox 1.0
|
This class abstracts a stanza extension, which is usually an element in a specific namespace. More...
#include <stanzaextension.h>
Public Member Functions | |
StanzaExtension (int type) | |
virtual | ~StanzaExtension () |
virtual const std::string & | filterString () const =0 |
virtual StanzaExtension * | newInstance (const Tag *tag) const =0 |
virtual Tag * | tag () const =0 |
virtual StanzaExtension * | clone () const =0 |
int | extensionType () const |
This class abstracts a stanza extension, which is usually an element in a specific namespace.
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.
<iq from='...' to='...' id='id1' type='get'> <stats xmlns='ext:stats'/> </iq> <iq from='...' to='...' id='id1' type='result'> <stats xmlns='ext:stats'> <users>10</users> </stats> </iq>
<stats xmlns='ext:stats'>
<users>10</users>
</stats>
StanzaExtension* StatsExtension::newInstance( const Tag* tag ) const { return new StatsExtension( tag ); }
Definition at line 177 of file stanzaextension.h.
StanzaExtension | ( | int | type | ) | [inline] |
Constructs an empty StanzaExtension.
type | Designates 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 185 of file stanzaextension.h.
virtual ~StanzaExtension | ( | ) | [inline, virtual] |
Virtual destructor.
Definition at line 190 of file stanzaextension.h.
virtual StanzaExtension* clone | ( | ) | const [pure virtual] |
Returns an identical copy of the current StanzaExtension.
Implemented in Adhoc::Command, AMP, Attention, Capabilities, ChatState, DataForm, DelayedDelivery, Disco::Info, Disco::Items, Error, FeatureNeg, GPGEncrypted, GPGSigned, LastActivity::Query, MessageEvent, MUCRoom::MUC, MUCRoom::MUCUser, Nickname, OOB, Event, Receipt, Registration::Query, SHIM, SoftwareVersion, VCard, VCardUpdate, and XHtmlIM.
int extensionType | ( | ) | const [inline] |
Returns the extension's type.
Definition at line 229 of file stanzaextension.h.
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.
Implemented in Adhoc::Command, AMP, Attention, Capabilities, ChatState, DataForm, DelayedDelivery, Disco::Info, Disco::Items, Error, FeatureNeg, GPGEncrypted, GPGSigned, LastActivity::Query, MessageEvent, MUCRoom::MUC, MUCRoom::MUCUser, Nickname, OOB, Event, Receipt, Registration::Query, SHIM, SoftwareVersion, VCard, VCardUpdate, and XHtmlIM.
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 ); }
Implemented in Adhoc::Command, AMP, Attention, Capabilities, ChatState, DataForm, DelayedDelivery, Disco::Info, Disco::Items, Error, FeatureNeg, GPGEncrypted, GPGSigned, LastActivity::Query, MessageEvent, MUCRoom::MUC, MUCRoom::MUCUser, Nickname, OOB, Event, Receipt, Registration::Query, SHIM, SoftwareVersion, VCard, VCardUpdate, and XHtmlIM.
virtual Tag* tag | ( | ) | const [pure virtual] |
Returns a Tag representation of the extension.
Implemented in Adhoc::Command, AMP, Attention, Capabilities, ChatState, DataForm, DelayedDelivery, Disco::Info, Disco::Items, Error, FeatureNeg, GPGEncrypted, GPGSigned, LastActivity::Query, MessageEvent, MUCRoom::MUC, MUCRoom::MUCUser, Nickname, OOB, Event, Receipt, Registration::Query, SHIM, SoftwareVersion, VCard, VCardUpdate, and XHtmlIM.