29 #include "QXmppLogger.h" 
   30 #include "QXmppJingleIq.h" 
   36 class QXmppIceComponentPrivate;
 
   37 class QXmppIceConnectionPrivate;
 
   38 class QXmppIcePrivate;
 
   45 class QXMPP_EXPORT QXmppStunMessage
 
   55         CreatePermission = 0x8,
 
   68     quint32 cookie() 
const;
 
   69     void setCookie(quint32 cookie);
 
   71     QByteArray id() 
const;
 
   72     void setId(
const QByteArray &
id);
 
   74     quint16 messageClass() 
const;
 
   75     quint16 messageMethod() 
const;
 
   78     void setType(quint16 type);
 
   82     quint32 changeRequest() 
const;
 
   83     void setChangeRequest(quint32 changeRequest);
 
   85     quint16 channelNumber() 
const;
 
   86     void setChannelNumber(quint16 channelNumber);
 
   88     QByteArray data() 
const;
 
   89     void setData(
const QByteArray &data);
 
   91     quint32 lifetime() 
const;
 
   92     void setLifetime(quint32 changeRequest);
 
   94     QByteArray nonce() 
const;
 
   95     void setNonce(
const QByteArray &nonce);
 
   97     quint32 priority() 
const;
 
   98     void setPriority(quint32 priority);
 
  100     QString realm() 
const;
 
  101     void setRealm(
const QString &realm);
 
  103     QByteArray reservationToken() 
const;
 
  104     void setReservationToken(
const QByteArray &reservationToken);
 
  106     quint8 requestedTransport() 
const;
 
  107     void setRequestedTransport(quint8 requestedTransport);
 
  109     QString software() 
const;
 
  110     void setSoftware(
const QString &software);
 
  112     QString username() 
const;
 
  113     void setUsername(
const QString &username);
 
  115     QByteArray encode(
const QByteArray &key = QByteArray(), 
bool addFingerprint = 
true) 
const;
 
  116     bool decode(
const QByteArray &buffer, 
const QByteArray &key = QByteArray(), QStringList *errors = 0);
 
  117     QString toString() 
const;
 
  118     static quint16 peekType(
const QByteArray &buffer, quint32 &cookie, QByteArray &
id);
 
  123     QByteArray iceControlling;
 
  124     QByteArray iceControlled;
 
  125     QHostAddress changedHost;
 
  127     QHostAddress mappedHost;
 
  129     QHostAddress otherHost;
 
  131     QHostAddress sourceHost;
 
  133     QHostAddress xorMappedHost;
 
  134     quint16 xorMappedPort;
 
  135     QHostAddress xorPeerHost;
 
  137     QHostAddress xorRelayedHost;
 
  138     quint16 xorRelayedPort;
 
  147     QSet<quint16> m_attributes;
 
  148     quint32 m_changeRequest;
 
  149     quint16 m_channelNumber;
 
  155     quint8 m_requestedTransport;
 
  156     QByteArray m_reservationToken;
 
  172     int component() 
const;
 
  173     bool isConnected() 
const;
 
  174     QList<QXmppJingleCandidate> localCandidates() 
const;
 
  176     static QList<QHostAddress> discoverAddresses();
 
  177     static QList<QUdpSocket*> reservePorts(
const QList<QHostAddress> &addresses, 
int count, QObject *parent = 0);
 
  181     void connectToHost();
 
  182     qint64 sendDatagram(
const QByteArray &datagram);
 
  185     void checkCandidates();
 
  186     void handleDatagram(
const QByteArray &datagram, 
const QHostAddress &host, quint16 port);
 
  187     void turnConnected();
 
  188     void transactionFinished();
 
  189     void updateGatheringState();
 
  190     void writeStun(
const QXmppStunMessage &request);
 
  197     void datagramReceived(
const QByteArray &datagram);
 
  200     void gatheringStateChanged();
 
  203     void localCandidatesChanged();
 
  208     QXmppIceComponentPrivate *d;
 
  209     friend class QXmppIceComponentPrivate;
 
  244     Q_ENUMS(GatheringState)
 
  245     Q_PROPERTY(
QXmppIceConnection::GatheringState gatheringState READ gatheringState NOTIFY gatheringStateChanged)
 
  252         CompleteGatheringState
 
  259     void addComponent(
int component);
 
  260     void setIceControlling(
bool controlling);
 
  262     QList<QXmppJingleCandidate> localCandidates() 
const;
 
  263     QString localUser() 
const;
 
  264     QString localPassword() 
const;
 
  267     void setRemoteUser(
const QString &user);
 
  268     void setRemotePassword(
const QString &password);
 
  270     void setStunServer(
const QHostAddress &host, quint16 port = 3478);
 
  271     void setTurnServer(
const QHostAddress &host, quint16 port = 3478);
 
  272     void setTurnUser(
const QString &user);
 
  273     void setTurnPassword(
const QString &password);
 
  275     bool bind(
const QList<QHostAddress> &addresses);
 
  276     bool isConnected() 
const;
 
  278     GatheringState gatheringState() 
const;
 
  288     void gatheringStateChanged();
 
  291     void localCandidatesChanged();
 
  295     void connectToHost();
 
  298     void slotConnected();
 
  299     void slotGatheringStateChanged();
 
  303     QXmppIceConnectionPrivate *d;