/usr/include/gloox/stanza.h is in libgloox-dev 1.0.11-1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 | /*
Copyright (c) 2005-2014 by Jakob Schroeter <js@camaya.net>
This file is part of the gloox library. http://camaya.net/gloox
This software is distributed under a license. The full license
agreement can be found in the file LICENSE in this distribution.
This software may not be copied, modified, sold or distributed
other than expressed in the named license agreement.
This software is distributed without any warranty.
*/
#ifndef STANZA_H__
#define STANZA_H__
#include "gloox.h"
#include "tag.h"
#include "jid.h"
#include "stanzaextension.h"
namespace gloox
{
class Error;
/**
* @brief This is the base class for XMPP stanza abstractions.
*
* @author Jakob Schroeter <js@camaya.net>
* @since 0.4
*/
class GLOOX_API Stanza
{
public:
/**
* Virtual destructor.
*/
virtual ~Stanza();
/**
* Sets the 'from' address of the Stanza. This useful for @link gloox::Component Components @endlink.
* @param from The from address.
*/
void setFrom( const JID& from ) { m_from = from; }
/**
* Returns the JID the stanza comes from.
* @return The origin of the stanza.
*/
const JID& from() const { return m_from; }
/**
* Returns the receiver of the stanza.
* @return The stanza's destination.
*/
const JID& to() const { return m_to; }
/**
* Returns the id of the stanza, if set.
* @return The ID of the stanza.
*/
const std::string& id() const { return m_id; }
/**
* A convenience function that returns the stanza error condition, if any.
* @return The stanza error condition, may be 0.
*/
const Error* error() const;
/**
* Retrieves the value of the xml:lang attribute of this stanza.
* Default is 'en'.
* @return The stanza's default language.
*/
const std::string& xmlLang() const { return m_xmllang; }
/**
* Use this function to add a StanzaExtension to this Stanza.
* @param se The StanzaExtension to add.
* @note The Stanza will become the owner of the StanzaExtension and
* will take care of deletion.
* @since 0.9
*/
void addExtension( const StanzaExtension* se );
/**
* Finds a StanzaExtension of a particular type.
* @param type StanzaExtensionType to search for.
* @return A pointer to the StanzaExtension, or 0 if none was found.
*/
const StanzaExtension* findExtension( int type ) const;
/**
* Finds a StanzaExtension of a particular type.
* Example:
* @code
* const MyExtension* c = presence.findExtension<MyExtension>( ExtMyExt );
* @endcode
* @param type The extension type to look for.
* @return The static_cast' type, or 0 if none was found.
*/
template< class T >
inline const T* findExtension( int type ) const
{
return static_cast<const T*>( findExtension( type ) );
}
/**
* Returns the list of the Stanza's extensions.
* @return The list of the Stanza's extensions.
*/
const StanzaExtensionList& extensions() const { return m_extensionList; }
/**
* Removes (deletes) all the stanza's extensions.
*/
void removeExtensions();
/**
* This function is used by StanzaExtensionFactory to signal ClientBase
* that this Stanza instance contains an embedded Stanza that needs to be
* checked for further StanzaExtensions.
* You should not need to use this function directly.
*/
void setEmbeddedStanza() { m_hasEmbeddedStanza = true; }
/**
* This function indicates whether this Stanza instance contains an embedded
* Stanza that needs to be checked for further StanzaExtensions.
* You should not need to use this function directly.
* @return Whether this Stanza instance contains an embedded
* Stanza.
*/
bool hasEmbeddedStanza() const { return m_hasEmbeddedStanza; }
/**
* This function returns the embedded Stanza. It is only needed by
* ClientBase/StanzaExtensionFactory.
* If hasEmbeddedStanza() is true, this function checks every
* embedded StanzaExtension for an embedded Stanza and returns the first it finds.
* You should not need to use this function directly.
* @return The embedded Stanza. May be 0.
*/
Stanza* embeddedStanza() const;
/**
* This function returns the embedded Tag that the embedded Stanza is based on.
* It is only needed by ClientBase/StanzaExtensionFactory.
* If hasEmbeddedStanza() is true, this function checks every
* embedded StanzaExtension for an embedded Tag and returns the first it finds.
* You should not need to use this function directly.
*
* @return The embedded Tag. May be 0.
*/
Tag* embeddedTag() const;
/**
* Creates a Tag representation of the Stanza. The Tag is completely
* independent of the Stanza and will not be updated when the Stanza
* is modified.
* @return A pointer to a Tag representation. It is the job of the
*
* caller to delete the Tag.
*/
virtual Tag* tag() const = 0;
protected:
/**
* Creates a new Stanza, taking from and to addresses from the given Tag.
* @param tag The Tag to create the Stanza from.
* @since 1.0
*/
Stanza( Tag* tag );
/**
* Creates a new Stanza object and initializes the receiver's JID.
* @param to The receipient of the Stanza.
* @since 1.0
*/
Stanza( const JID& to );
StanzaExtensionList m_extensionList;
std::string m_id;
std::string m_xmllang;
JID m_from;
JID m_to;
static const std::string& findLang( const StringMap* map,
const std::string& defaultData,
const std::string& lang );
static void setLang( StringMap** map,
std::string& defaultLang,
const Tag* tag );
static void setLang( StringMap** map,
std::string& defaultLang,
const std::string& data,
const std::string& xmllang );
static void getLangs( const StringMap* map,
const std::string& defaultData,
const std::string& name, Tag* tag );
private:
Stanza( const Stanza& );
bool m_hasEmbeddedStanza;
};
}
#endif // STANZA_H__
|