Chat-O-Matic/libs/libgloox/iq.h
2015-06-24 15:52:32 +00:00

97 lines
2.7 KiB
C++

/*
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 IQ_H__
#define IQ_H__
#include "stanza.h"
#include "gloox.h"
#include <string>
namespace gloox
{
class JID;
/**
* @brief An abstraction of an IQ stanza.
*
* @author Vincent Thomasset
* @author Jakob Schröter <js@camaya.net>
* @since 1.0
*/
class GLOOX_API IQ : public Stanza
{
friend class ClientBase;
public:
/**
* Describes the different valid IQ types.
*/
enum IqType
{
Get = 0, /**< The stanza is a request for information or requirements. */
Set, /**< The stanza provides required data, sets new values, or
* replaces existing values. */
Result, /**< The stanza is a response to a successful get or set request. */
Error, /**< An error has occurred regarding processing or delivery of a
* previously-sent get or set (see Stanza Errors (Section 9.3)). */
Invalid /**< The stanza is invalid */
};
/**
* Creates an IQ Query.
* @param type The desired IqType.
* @param to The intended receiver.
* @param id The request's ID. Usually obtained from ClientBase::getID(). Optional,
* will be added by ClientBase if the IQ is sent by means of
* @link gloox::ClientBase::send( IQ&, IqHandler*, int, bool ) send( IQ&, IqHandler*, int, bool ) @endlink.
* You should only need to pass this when creating a reply (i.e. an IQ of type Result or Error).
*/
IQ( IqType type, const JID& to, const std::string& id = EmptyString );
/**
* Virtual destructor.
*/
virtual ~IQ();
/**
* Returns the IQ's type.
* @return The IQ's type.
*/
IqType subtype() const { return m_subtype; }
// reimplemented from Stanza
virtual Tag* tag() const;
private:
#ifdef IQ_TEST
public:
#endif
/**
* Creates an IQ from a tag. The original Tag will be ripped off.
* @param tag The Tag to parse.
*/
IQ( Tag* tag );
void setID( const std::string& id ) { m_id = id; }
IqType m_subtype;
};
}
#endif // IQ_H__