diff options
| author | Jeremy Lainé <jeremy.laine@m4x.org> | 2012-02-08 12:51:15 +0000 |
|---|---|---|
| committer | Jeremy Lainé <jeremy.laine@m4x.org> | 2012-02-08 12:51:15 +0000 |
| commit | deb9d6cb53057ca8b90d10d6a3bdc5dcfd1b3ee4 (patch) | |
| tree | d956bad28e28aadc3c83dbf88b3eddb5e1d9a9f4 /src/base/QXmppStanza.h | |
| parent | e8a1ad0cc608f12874ba4bafbd8282fa537ec9fb (diff) | |
| download | qxmpp-deb9d6cb53057ca8b90d10d6a3bdc5dcfd1b3ee4.tar.gz | |
move files common to client/server into "base"
Diffstat (limited to 'src/base/QXmppStanza.h')
| -rw-r--r-- | src/base/QXmppStanza.h | 162 |
1 files changed, 162 insertions, 0 deletions
diff --git a/src/base/QXmppStanza.h b/src/base/QXmppStanza.h new file mode 100644 index 00000000..dc1c1346 --- /dev/null +++ b/src/base/QXmppStanza.h @@ -0,0 +1,162 @@ +/* + * Copyright (C) 2008-2011 The QXmpp developers + * + * Author: + * Manjeet Dahiya + * + * Source: + * http://code.google.com/p/qxmpp + * + * This file is a part of QXmpp library. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + */ + + +#ifndef QXMPPSTANZA_H +#define QXMPPSTANZA_H + +#include "QXmppElement.h" +#include "QXmppPacket.h" +#include <QString> + +// forward declarations of QXmlStream* classes will not work on Mac, we need to +// include the whole header. +// See http://lists.trolltech.com/qt-interest/2008-07/thread00798-0.html +// for an explanation. +#include <QXmlStreamWriter> + +/// \defgroup Stanzas + +/// \brief The QXmppStanza class is the base class for all XMPP stanzas. +/// +/// \ingroup Stanzas + +class QXmppStanza : public QXmppPacket +{ +public: + class Error + { + public: + enum Type + { + Cancel, + Continue, + Modify, + Auth, + Wait + }; + + enum Condition + { + BadRequest, + Conflict, + FeatureNotImplemented, + Forbidden, + Gone, + InternalServerError, + ItemNotFound, + JidMalformed, + NotAcceptable, + NotAllowed, + NotAuthorized, + PaymentRequired, + RecipientUnavailable, + Redirect, + RegistrationRequired, + RemoteServerNotFound, + RemoteServerTimeout, + ResourceConstraint, + ServiceUnavailable, + SubscriptionRequired, + UndefinedCondition, + UnexpectedRequest + }; + + Error(); + Error(Type type, Condition cond, const QString& text=""); + Error(const QString& type, const QString& cond, const QString& text=""); + + int code() const; + void setCode(int code); + + QString text() const; + void setText(const QString& text); + + Condition condition() const; + void setCondition(Condition cond); + + void setType(Type type); + Type type() const; + + // FIXME : remove this once is gone + bool isValid() const; + + /// \cond + void parse(const QDomElement &element); + void toXml(QXmlStreamWriter *writer) const; + /// \endcond + + private: + QString getConditionStr() const; + void setConditionFromStr(const QString& cond); + + QString getTypeStr() const; + void setTypeFromStr(const QString& type); + + int m_code; + Type m_type; + Condition m_condition; + QString m_text; + }; + + QXmppStanza(const QString& from = QString(), const QString& to = QString()); + ~QXmppStanza(); + + QString to() const; + void setTo(const QString&); + + QString from() const; + void setFrom(const QString&); + + QString id() const; + void setId(const QString&); + + QString lang() const; + void setLang(const QString&); + + QXmppStanza::Error error() const; + void setError(const QXmppStanza::Error& error); + + QXmppElementList extensions() const; + void setExtensions(const QXmppElementList &elements); + + /// \cond + // FIXME : why is this needed? + bool isErrorStanza() const; + +protected: + void generateAndSetNextId(); + void parse(const QDomElement &element); + /// \endcond + +private: + static uint s_uniqeIdNo; + QString m_to; + QString m_from; + QString m_id; + QString m_lang; + QXmppStanza::Error m_error; + QXmppElementList m_extensions; +}; + +#endif // QXMPPSTANZA_H |
