00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
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 unsigned int ptime() const;
00056 void setPtime(unsigned int ptime);
00057
00059 void parse(const QDomElement &element);
00060 void toXml(QXmlStreamWriter *writer) const;
00062
00063 bool operator==(const QXmppJinglePayloadType &other) const;
00064
00065 private:
00066 unsigned char m_channels;
00067 unsigned int m_clockrate;
00068 unsigned char m_id;
00069 unsigned int m_maxptime;
00070 QString m_name;
00071 unsigned int m_ptime;
00072 };
00073
00077
00078 class QXmppJingleCandidate
00079 {
00080 public:
00082 enum Type
00083 {
00084 HostType,
00085 PeerReflexiveType,
00086
00087 ServerReflexiveType,
00088
00089 RelayedType,
00090
00091 };
00092
00093 QXmppJingleCandidate();
00094
00095 int component() const;
00096 void setComponent(int component);
00097
00098 int foundation() const;
00099 void setFoundation(int foundation);
00100
00101 QHostAddress host() const;
00102 void setHost(const QHostAddress &host);
00103
00104 QString id() const;
00105 void setId(const QString &id);
00106
00107 int network() const;
00108 void setNetwork(int network);
00109
00110 quint16 port() const;
00111 void setPort(quint16 port);
00112
00113 int priority() const;
00114 void setPriority(int priority);
00115
00116 QString protocol() const;
00117 void setProtocol(const QString &protocol);
00118
00119 QXmppJingleCandidate::Type type() const;
00120 void setType(QXmppJingleCandidate::Type);
00121
00122 bool isNull() const;
00123
00124 static QXmppJingleCandidate::Type typeFromString(const QString &typeStr, bool *ok = 0);
00125 static QString typeToString(QXmppJingleCandidate::Type type);
00126
00128 void parse(const QDomElement &element);
00129 void toXml(QXmlStreamWriter *writer) const;
00131
00132 private:
00133 int m_component;
00134 int m_foundation;
00135 int m_generation;
00136 QHostAddress m_host;
00137 QString m_id;
00138 int m_network;
00139 quint16 m_port;
00140 QString m_protocol;
00141 int m_priority;
00142 QXmppJingleCandidate::Type m_type;
00143 };
00144
00149
00150 class QXmppJingleIq : public QXmppIq
00151 {
00152 public:
00154 enum Action {
00155 ContentAccept,
00156 ContentAdd,
00157 ContentModify,
00158 ContentReject,
00159 ContentRemove,
00160 DescriptionInfo,
00161 SecurityInfo,
00162 SessionAccept,
00163 SessionInfo,
00164 SessionInitiate,
00165 SessionTerminate,
00166 TransportAccept,
00167 TransportInfo,
00168 TransportReject,
00169 TransportReplace,
00170 };
00171
00176
00177 class Content
00178 {
00179 public:
00180 Content();
00181
00182 QString creator() const;
00183 void setCreator(const QString &creator);
00184
00185 QString name() const;
00186 void setName(const QString &name);
00187
00188 QString senders() const;
00189 void setSenders(const QString &senders);
00190
00191
00192 QString descriptionMedia() const;
00193 void setDescriptionMedia(const QString &media);
00194
00195 void addPayloadType(const QXmppJinglePayloadType &payload);
00196 QList<QXmppJinglePayloadType> payloadTypes() const;
00197 void setPayloadTypes(const QList<QXmppJinglePayloadType> &payloadTypes);
00198
00199 void addTransportCandidate(const QXmppJingleCandidate &candidate);
00200 QList<QXmppJingleCandidate> transportCandidates() const;
00201
00202 QString transportUser() const;
00203 void setTransportUser(const QString &user);
00204
00205 QString transportPassword() const;
00206 void setTransportPassword(const QString &password);
00207
00209 void parse(const QDomElement &element);
00210 void toXml(QXmlStreamWriter *writer) const;
00212
00213 private:
00214 QString m_creator;
00215 QString m_disposition;
00216 QString m_name;
00217 QString m_senders;
00218
00219 QString m_descriptionMedia;
00220 QString m_descriptionType;
00221 QString m_transportType;
00222 QString m_transportUser;
00223 QString m_transportPassword;
00224 QList<QXmppJinglePayloadType> m_payloadTypes;
00225 QList<QXmppJingleCandidate> m_transportCandidates;
00226 };
00227
00232
00233 class Reason
00234 {
00235 public:
00236 enum Type {
00237 None,
00238 AlternativeSession,
00239 Busy,
00240 Cancel,
00241 ConnectivityError,
00242 Decline,
00243 Expired,
00244 FailedApplication,
00245 FailedTransport,
00246 GeneralError,
00247 Gone,
00248 IncompatibleParameters,
00249 MediaError,
00250 SecurityError,
00251 Success,
00252 Timeout,
00253 UnsupportedApplications,
00254 UnsupportedTransports,
00255 };
00256
00257 Reason();
00258
00259 QString text() const;
00260 void setText(const QString &text);
00261
00262 Type type() const;
00263 void setType(Type type);
00264
00266 void parse(const QDomElement &element);
00267 void toXml(QXmlStreamWriter *writer) const;
00269
00270 private:
00271 QString m_text;
00272 Type m_type;
00273 };
00274
00275 QXmppJingleIq();
00276
00277 Action action() const;
00278 void setAction(Action action);
00279
00280 QString initiator() const;
00281 void setInitiator(const QString &initiator);
00282
00283 QString responder() const;
00284 void setResponder(const QString &responder);
00285
00286 QString sid() const;
00287 void setSid(const QString &sid);
00288
00290 Content& content() { return m_content; };
00291
00293 const Content& content() const { return m_content; };
00294
00296 Reason& reason() { return m_reason; };
00297
00299 const Reason& reason() const { return m_reason; };
00300
00301
00302 bool ringing() const;
00303 void setRinging(bool ringing);
00304
00306 static bool isJingleIq(const QDomElement &element);
00308
00309 protected:
00311 void parseElementFromChild(const QDomElement &element);
00312 void toXmlElementFromChild(QXmlStreamWriter *writer) const;
00314
00315 private:
00316 Action m_action;
00317 QString m_initiator;
00318 QString m_responder;
00319 QString m_sid;
00320
00321 Content m_content;
00322 Reason m_reason;
00323 bool m_ringing;
00324 };
00325
00326 #endif