QXmpp Version:0.3.91
|
00001 /* 00002 * Copyright (C) 2008-2011 The QXmpp developers 00003 * 00004 * Author: 00005 * Jeremy LainĂ© 00006 * 00007 * Source: 00008 * http://code.google.com/p/qxmpp 00009 * 00010 * This file is a part of QXmpp library. 00011 * 00012 * This library is free software; you can redistribute it and/or 00013 * modify it under the terms of the GNU Lesser General Public 00014 * License as published by the Free Software Foundation; either 00015 * version 2.1 of the License, or (at your option) any later version. 00016 * 00017 * This library is distributed in the hope that it will be useful, 00018 * but WITHOUT ANY WARRANTY; without even the implied warranty of 00019 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 00020 * Lesser General Public License for more details. 00021 * 00022 */ 00023 00024 #ifndef QXMPPJINGLEIQ_H 00025 #define QXMPPJINGLEIQ_H 00026 00027 #include <QHostAddress> 00028 00029 #include "QXmppIq.h" 00030 00034 00035 class QXmppJinglePayloadType 00036 { 00037 public: 00038 QXmppJinglePayloadType(); 00039 00040 unsigned char channels() const; 00041 void setChannels(unsigned char channels); 00042 00043 unsigned int clockrate() const; 00044 void setClockrate(unsigned int clockrate); 00045 00046 unsigned char id() const; 00047 void setId(unsigned char id); 00048 00049 unsigned int maxptime() const; 00050 void setMaxptime(unsigned int maxptime); 00051 00052 QString name() const; 00053 void setName(const QString &name); 00054 00055 QMap<QString, QString> parameters() const; 00056 void setParameters(const QMap<QString, QString> ¶meters); 00057 00058 unsigned int ptime() const; 00059 void setPtime(unsigned int ptime); 00060 00062 void parse(const QDomElement &element); 00063 void toXml(QXmlStreamWriter *writer) const; 00065 00066 bool operator==(const QXmppJinglePayloadType &other) const; 00067 00068 private: 00069 unsigned char m_channels; 00070 unsigned int m_clockrate; 00071 unsigned char m_id; 00072 unsigned int m_maxptime; 00073 QString m_name; 00074 QMap<QString, QString> m_parameters; 00075 unsigned int m_ptime; 00076 }; 00077 00081 00082 class QXmppJingleCandidate 00083 { 00084 public: 00086 enum Type 00087 { 00088 HostType, 00089 PeerReflexiveType, 00090 00091 ServerReflexiveType, 00092 00093 RelayedType, 00094 00095 }; 00096 00097 QXmppJingleCandidate(); 00098 00099 int component() const; 00100 void setComponent(int component); 00101 00102 int foundation() const; 00103 void setFoundation(int foundation); 00104 00105 QHostAddress host() const; 00106 void setHost(const QHostAddress &host); 00107 00108 QString id() const; 00109 void setId(const QString &id); 00110 00111 int network() const; 00112 void setNetwork(int network); 00113 00114 quint16 port() const; 00115 void setPort(quint16 port); 00116 00117 int priority() const; 00118 void setPriority(int priority); 00119 00120 QString protocol() const; 00121 void setProtocol(const QString &protocol); 00122 00123 QXmppJingleCandidate::Type type() const; 00124 void setType(QXmppJingleCandidate::Type); 00125 00126 bool isNull() const; 00127 00128 static QXmppJingleCandidate::Type typeFromString(const QString &typeStr, bool *ok = 0); 00129 static QString typeToString(QXmppJingleCandidate::Type type); 00130 00132 void parse(const QDomElement &element); 00133 void toXml(QXmlStreamWriter *writer) const; 00135 00136 private: 00137 int m_component; 00138 int m_foundation; 00139 int m_generation; 00140 QHostAddress m_host; 00141 QString m_id; 00142 int m_network; 00143 quint16 m_port; 00144 QString m_protocol; 00145 int m_priority; 00146 QXmppJingleCandidate::Type m_type; 00147 }; 00148 00153 00154 class QXmppJingleIq : public QXmppIq 00155 { 00156 public: 00158 enum Action { 00159 ContentAccept, 00160 ContentAdd, 00161 ContentModify, 00162 ContentReject, 00163 ContentRemove, 00164 DescriptionInfo, 00165 SecurityInfo, 00166 SessionAccept, 00167 SessionInfo, 00168 SessionInitiate, 00169 SessionTerminate, 00170 TransportAccept, 00171 TransportInfo, 00172 TransportReject, 00173 TransportReplace, 00174 }; 00175 00180 00181 class Content 00182 { 00183 public: 00184 Content(); 00185 00186 QString creator() const; 00187 void setCreator(const QString &creator); 00188 00189 QString name() const; 00190 void setName(const QString &name); 00191 00192 QString senders() const; 00193 void setSenders(const QString &senders); 00194 00195 // XEP-0167: Jingle RTP Sessions 00196 QString descriptionMedia() const; 00197 void setDescriptionMedia(const QString &media); 00198 00199 void addPayloadType(const QXmppJinglePayloadType &payload); 00200 QList<QXmppJinglePayloadType> payloadTypes() const; 00201 void setPayloadTypes(const QList<QXmppJinglePayloadType> &payloadTypes); 00202 00203 void addTransportCandidate(const QXmppJingleCandidate &candidate); 00204 QList<QXmppJingleCandidate> transportCandidates() const; 00205 00206 QString transportUser() const; 00207 void setTransportUser(const QString &user); 00208 00209 QString transportPassword() const; 00210 void setTransportPassword(const QString &password); 00211 00213 void parse(const QDomElement &element); 00214 void toXml(QXmlStreamWriter *writer) const; 00216 00217 private: 00218 QString m_creator; 00219 QString m_disposition; 00220 QString m_name; 00221 QString m_senders; 00222 00223 QString m_descriptionMedia; 00224 QString m_descriptionType; 00225 QString m_transportType; 00226 QString m_transportUser; 00227 QString m_transportPassword; 00228 QList<QXmppJinglePayloadType> m_payloadTypes; 00229 QList<QXmppJingleCandidate> m_transportCandidates; 00230 }; 00231 00236 00237 class Reason 00238 { 00239 public: 00240 enum Type { 00241 None, 00242 AlternativeSession, 00243 Busy, 00244 Cancel, 00245 ConnectivityError, 00246 Decline, 00247 Expired, 00248 FailedApplication, 00249 FailedTransport, 00250 GeneralError, 00251 Gone, 00252 IncompatibleParameters, 00253 MediaError, 00254 SecurityError, 00255 Success, 00256 Timeout, 00257 UnsupportedApplications, 00258 UnsupportedTransports, 00259 }; 00260 00261 Reason(); 00262 00263 QString text() const; 00264 void setText(const QString &text); 00265 00266 Type type() const; 00267 void setType(Type type); 00268 00270 void parse(const QDomElement &element); 00271 void toXml(QXmlStreamWriter *writer) const; 00273 00274 private: 00275 QString m_text; 00276 Type m_type; 00277 }; 00278 00279 QXmppJingleIq(); 00280 00281 Action action() const; 00282 void setAction(Action action); 00283 00284 QString initiator() const; 00285 void setInitiator(const QString &initiator); 00286 00287 QString responder() const; 00288 void setResponder(const QString &responder); 00289 00290 QString sid() const; 00291 void setSid(const QString &sid); 00292 00294 Content& content() { return m_content; }; 00295 00297 const Content& content() const { return m_content; }; 00298 00300 Reason& reason() { return m_reason; }; 00301 00303 const Reason& reason() const { return m_reason; }; 00304 00305 // XEP-0167: Jingle RTP Sessions 00306 bool ringing() const; 00307 void setRinging(bool ringing); 00308 00310 static bool isJingleIq(const QDomElement &element); 00312 00313 protected: 00315 void parseElementFromChild(const QDomElement &element); 00316 void toXmlElementFromChild(QXmlStreamWriter *writer) const; 00318 00319 private: 00320 Action m_action; 00321 QString m_initiator; 00322 QString m_responder; 00323 QString m_sid; 00324 00325 Content m_content; 00326 Reason m_reason; 00327 bool m_ringing; 00328 }; 00329 00330 #endif