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 QXMPPRTPCHANNEL_H
00025 #define QXMPPRTPCHANNEL_H
00026
00027 #include <QIODevice>
00028
00029 #include "QXmppLogger.h"
00030
00031 class QXmppCodec;
00032 class QXmppJinglePayloadType;
00033 class QXmppRtpChannelPrivate;
00034
00041
00042 class QXmppRtpChannel : public QIODevice
00043 {
00044 Q_OBJECT
00045
00046 public:
00048 enum Tone {
00049 Tone_0 = 0,
00050 Tone_1,
00051 Tone_2,
00052 Tone_3,
00053 Tone_4,
00054 Tone_5,
00055 Tone_6,
00056 Tone_7,
00057 Tone_8,
00058 Tone_9,
00059 Tone_Star,
00060 Tone_Pound,
00061 Tone_A,
00062 Tone_B,
00063 Tone_C,
00064 Tone_D
00065 };
00066
00067 QXmppRtpChannel(QObject *parent = 0);
00068 ~QXmppRtpChannel();
00069
00070 QXmppJinglePayloadType payloadType() const;
00071
00072 QList<QXmppJinglePayloadType> localPayloadTypes() const;
00073 void setRemotePayloadTypes(const QList<QXmppJinglePayloadType> &remotePayloadTypes);
00074
00076 qint64 bytesAvailable() const;
00077 bool isSequential() const;
00078 qint64 pos() const;
00079 bool seek(qint64 pos);
00081
00082 signals:
00084 void sendDatagram(const QByteArray &ba);
00085
00087 void logMessage(QXmppLogger::MessageType type, const QString &msg);
00088
00089 public slots:
00090 void datagramReceived(const QByteArray &ba);
00091 void startTone(QXmppRtpChannel::Tone tone);
00092 void stopTone(QXmppRtpChannel::Tone tone);
00093
00094 protected:
00096 void debug(const QString &message)
00097 {
00098 emit logMessage(QXmppLogger::DebugMessage, qxmpp_loggable_trace(message));
00099 }
00100
00101 void warning(const QString &message)
00102 {
00103 emit logMessage(QXmppLogger::WarningMessage, qxmpp_loggable_trace(message));
00104 }
00105
00106 void logReceived(const QString &message)
00107 {
00108 emit logMessage(QXmppLogger::ReceivedMessage, qxmpp_loggable_trace(message));
00109 }
00110
00111 void logSent(const QString &message)
00112 {
00113 emit logMessage(QXmppLogger::SentMessage, qxmpp_loggable_trace(message));
00114 }
00115
00116 qint64 readData(char * data, qint64 maxSize);
00117 qint64 writeData(const char * data, qint64 maxSize);
00119
00120 private slots:
00121 void emitSignals();
00122 void writeDatagram();
00123
00124 private:
00125 QXmppRtpChannelPrivate * const d;
00126 };
00127
00128 #endif