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:
00081 QXmppJingleCandidate();
00082
00083 int component() const;
00084 void setComponent(int component);
00085
00086 int foundation() const;
00087 void setFoundation(int foundation);
00088
00089 QHostAddress host() const;
00090 void setHost(const QHostAddress &host);
00091
00092 QString id() const;
00093 void setId(const QString &id);
00094
00095 int network() const;
00096 void setNetwork(int network);
00097
00098 quint16 port() const;
00099 void setPort(quint16 port);
00100
00101 int priority() const;
00102 void setPriority(int priority);
00103
00104 QString protocol() const;
00105 void setProtocol(const QString &protocol);
00106
00107 QString type() const;
00108 void setType(const QString &type);
00109
00110 bool isNull() const;
00111
00113 void parse(const QDomElement &element);
00114 void toXml(QXmlStreamWriter *writer) const;
00116
00117 private:
00118 int m_component;
00119 int m_foundation;
00120 int m_generation;
00121 QHostAddress m_host;
00122 QString m_id;
00123 int m_network;
00124 quint16 m_port;
00125 QString m_protocol;
00126 int m_priority;
00127 QString m_type;
00128 };
00129
00134
00135 class QXmppJingleIq : public QXmppIq
00136 {
00137 public:
00138 enum Action {
00139 ContentAccept,
00140 ContentAdd,
00141 ContentModify,
00142 ContentReject,
00143 ContentRemove,
00144 DescriptionInfo,
00145 SecurityInfo,
00146 SessionAccept,
00147 SessionInfo,
00148 SessionInitiate,
00149 SessionTerminate,
00150 TransportAccept,
00151 TransportInfo,
00152 TransportReject,
00153 TransportReplace,
00154 };
00155
00160
00161 class Content
00162 {
00163 public:
00164 Content();
00165
00166 QString creator() const;
00167 void setCreator(const QString &creator);
00168
00169 QString name() const;
00170 void setName(const QString &name);
00171
00172 QString senders() const;
00173 void setSenders(const QString &senders);
00174
00175
00176 QString descriptionMedia() const;
00177 void setDescriptionMedia(const QString &media);
00178
00179 void addPayloadType(const QXmppJinglePayloadType &payload);
00180 QList<QXmppJinglePayloadType> payloadTypes() const;
00181 void setPayloadTypes(const QList<QXmppJinglePayloadType> &payloadTypes);
00182
00183 void addTransportCandidate(const QXmppJingleCandidate &candidate);
00184 QList<QXmppJingleCandidate> transportCandidates() const;
00185
00186 QString transportUser() const;
00187 void setTransportUser(const QString &user);
00188
00189 QString transportPassword() const;
00190 void setTransportPassword(const QString &password);
00191
00193 void parse(const QDomElement &element);
00194 void toXml(QXmlStreamWriter *writer) const;
00196
00197 private:
00198 QString m_creator;
00199 QString m_disposition;
00200 QString m_name;
00201 QString m_senders;
00202
00203 QString m_descriptionMedia;
00204 QString m_descriptionType;
00205 QString m_transportType;
00206 QString m_transportUser;
00207 QString m_transportPassword;
00208 QList<QXmppJinglePayloadType> m_payloadTypes;
00209 QList<QXmppJingleCandidate> m_transportCandidates;
00210 };
00211
00216
00217 class Reason
00218 {
00219 public:
00220 enum Type {
00221 None,
00222 AlternativeSession,
00223 Busy,
00224 Cancel,
00225 ConnectivityError,
00226 Decline,
00227 Expired,
00228 FailedApplication,
00229 FailedTransport,
00230 GeneralError,
00231 Gone,
00232 IncompatibleParameters,
00233 MediaError,
00234 SecurityError,
00235 Success,
00236 Timeout,
00237 UnsupportedApplications,
00238 UnsupportedTransports,
00239 };
00240
00241 Reason();
00242
00243 QString text() const;
00244 void setText(const QString &text);
00245
00246 Type type() const;
00247 void setType(Type type);
00248
00250 void parse(const QDomElement &element);
00251 void toXml(QXmlStreamWriter *writer) const;
00253
00254 private:
00255 QString m_text;
00256 Type m_type;
00257 };
00258
00259 QXmppJingleIq();
00260
00261 Action action() const;
00262 void setAction(Action action);
00263
00264 QString initiator() const;
00265 void setInitiator(const QString &initiator);
00266
00267 QString responder() const;
00268 void setResponder(const QString &responder);
00269
00270 QString sid() const;
00271 void setSid(const QString &sid);
00272
00273 Content& content() { return m_content; };
00274 const Content& content() const { return m_content; };
00275
00276 Reason& reason() { return m_reason; };
00277 const Reason& reason() const { return m_reason; };
00278
00279
00280 bool ringing() const;
00281 void setRinging(bool ringing);
00282
00283 static bool isJingleIq(const QDomElement &element);
00284
00285 protected:
00287 void parseElementFromChild(const QDomElement &element);
00288 void toXmlElementFromChild(QXmlStreamWriter *writer) const;
00290
00291 private:
00292 Action m_action;
00293 QString m_initiator;
00294 QString m_responder;
00295 QString m_sid;
00296
00297 Content m_content;
00298 Reason m_reason;
00299 bool m_ringing;
00300 };
00301
00302 #endif