/usr/include/gloox/presence.h is in libgloox-dev 1.0.13-3build1.
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 | /*
Copyright (c) 2007-2015 by Jakob Schröter <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 PRESENCE_H__
#define PRESENCE_H__
#include "stanza.h"
#include <string>
namespace gloox
{
class Capabilities;
class JID;
/**
* @brief An abstraction of a presence stanza.
*
* @author Jakob Schröter <js@camaya.net>
* @since 1.0
*/
class GLOOX_API Presence : public Stanza
{
friend class ClientBase;
public:
/**
* Describes the different valid presence types.
*/
enum PresenceType
{
Available, /**< The entity is online. */
Chat, /**< The entity is 'available for chat'. */
Away, /**< The entity is away. */
DND, /**< The entity is DND (Do Not Disturb). */
XA, /**< The entity is XA (eXtended Away). */
Unavailable, /**< The entity is offline. */
Probe, /**< This is a presence probe. */
Error, /**< This is a presence error. */
Invalid /**< The stanza is invalid. */
};
/**
* Creates a Presence request.
* @param type The presence type.
* @param to The intended receiver. Use an empty JID to create a broadcast packet.
* @param status An optional status message (e.g. "gone fishing").
* @param priority An optional presence priority. Legal range is between -128 and +127.
* Defaults to 0.
* @param xmllang An optional xml:lang for the status message.
*/
Presence( PresenceType type, const JID& to, const std::string& status = EmptyString,
int priority = 0, const std::string& xmllang = EmptyString );
/**
* Destructor.
*/
virtual ~Presence();
/**
* Returns the presence's type.
* @return The presence's type.
*/
PresenceType subtype() const { return m_subtype; }
/**
* A convenience function returning the stanza's Capabilities, if any. May be 0.
* @return A pointer to a Capabilities object, or 0.
*/
const Capabilities* capabilities() const;
/**
* Returns the presence's type.
* @return The presence's type.
*/
//#warning FIXME return something useful (only 'show' values?) or kill this func
PresenceType presence() const { return m_subtype; }
/**
* Sets the presence type.
* @param type The presence type.
*/
void setPresence( PresenceType type ) { m_subtype = type; }
/**
* Returns the status text of a presence stanza for the given language if available.
* If the requested language is not available, the default status text (without a xml:lang
* attribute) will be returned.
* @param lang The language identifier for the desired language. It must conform to
* section 2.12 of the XML specification and RFC 3066. If empty, the default body
* will be returned, if any.
* @return The status text set by the sender.
*/
const std::string status( const std::string& lang = "default" ) const
{
return findLang( m_stati, m_status, lang );
}
/**
* Adds a (possibly translated) status message.
* @param status The status message.
* @param lang The language identifier for the desired language. It must conform to
* section 2.12 of the XML specification and RFC 3066.
*/
void addStatus( const std::string& status, const std::string& lang = EmptyString )
{
setLang( &m_stati, m_status, status, lang );
}
/**
* Resets the default status message as well as all language-specific ones.
*/
void resetStatus();
/**
* Returns the presence priority in the legal range: -128 to +127.
* @return The priority information contained in the stanza, defaults to 0.
*/
int priority() const { return m_priority; }
/**
* Sets the priority. Legal range: -128 to +127.
* @param priority The priority to set.
*/
void setPriority( int priority );
// reimplemented from Stanza
virtual Tag* tag() const;
private:
#ifdef PRESENCE_TEST
public:
#endif
/**
* Creates a Presence request from the given Tag. The original Tag will be ripped off.
* @param tag The Tag to parse.
*/
Presence( Tag* tag );
PresenceType m_subtype;
StringMap* m_stati;
std::string m_status;
int m_priority;
};
}
#endif // PRESENCE_H__
|