SVN commit 740638 by mattr: Remove the UDPTransportBridge addition from trunk. It'll be merged back in when we merge the iup-isi-group branch M +4 -180 transport.cpp M +0 -42 transport.h --- trunk/KDE/kdenetwork/kopete/protocols/msn/transport.cpp #740637:740638 @@ -67,7 +67,8 @@ } if (PeerToPeer::Udp == type){ - bridge = new UdpTransportBridge(address, mFormatter, this, identifier.ascii()); +// TODO Add class UdpTransportBridge +// bridge = new UdpTransportBridge(address, this, mFormatter, identifier.ascii()); } if (bridge != 0l) @@ -309,6 +310,8 @@ //END + + TcpTransportBridge::Buffer::Buffer(quint32 length) : QByteArray(length) { @@ -348,186 +351,7 @@ //END - -//BEGIN UDP Transport public methods -UdpTransportBridge::~UdpTransportBridge() -{ } -//END -//BEGIN UDP Transport private methods -UdpTransportBridge::UdpTransportBridge(const KNetwork::KInetSocketAddress& to, MessageFormatter* formatter, QObject* parent) : TransportBridge(to, formatter, parent) -{ - mSocket = new KDatagramSocket(this); - mSocket->setBlocking(false); - QObject::connect(mSocket, SIGNAL(connected(const KResolverEntry&)), SLOT(slotOnSocketConnect())); - QObject::connect(mSocket, SIGNAL(gotError(int)), SLOT(slotOnError(int))); - mConnected = false; -} -UdpTransportBridge::UdpTransportBridge(KNetwork::KClientSocketBase* socket, MessageFormatter* formatter, QObject* parent) : TransportBridge(socket, formatter, parent) -{ - mConnected = (mSocket->state() == KDatagramSocket::Open) ? true : false; - mSocket->setBlocking(false); -} -//END - -//BEGIN UDP Transport protected slot methods -void UdpTransportBridge::slotOnConnect() -{ - if (mConnected) - { - kDebug() << "Bridge (" << name() << ") ALREADY CONNECTED " << mSocket->peerAddress().toString() << " <-> " << mSocket->localAddress().toString(); - return; - } - - KDatagramSocket *socket = static_cast(mSocket); - socket->setTimeout(5000); - QObject::connect(socket, SIGNAL(timeOut()), SLOT(slotOnSocketConnectTimeout())); - mSocket->connect(); -} - -void UdpTransportBridge::slotOnDisconnect() -{ - if (mConnected) - { - mSocket->close(); - } -} - -void UdpTransportBridge::slotOnError(int errorCode) -{ - kDebug() << "Bridge (" << name() << ") ERROR occurred on {" << mSocket->localAddress().toString() << " <-> " << mSocket->peerAddress().toString() << "} - " << mSocket->errorString(); - emit bridgeError(QString("Bridge ERROR %1: %2").arg(errorCode).arg(mSocket->errorString())); - if (mConnected){ - mSocket->disconnect(); - mConnected = false; - } - mSocket->deleteLater(); - mSocket = 0l; -} - -void UdpTransportBridge::slotOnSocketClose() -{ - mSocket->disconnect(); - kDebug(14140) << "Bridge (" << name() << ") DISCONNECTED {" << mSocket->peerAddress().toString() << " <-> " << mSocket->localAddress().toString() << "}"; - mConnected = false; - mSocket->deleteLater(); - mSocket = 0l; - - emit bridgeDisconnect(); -} - -void UdpTransportBridge::slotOnSocketConnect() -{ - kDebug(14140) << "Bridge (" << name() << ") CONNECTED to " << mSocket->peerAddress().toString() << " from " - << mSocket->localAddress().toString() << endl; - mConnected = true; - - QObject::connect(mSocket, SIGNAL(readyRead()), SLOT(slotOnSocketReceive())); - QObject::connect(mSocket, SIGNAL(closed()), SLOT(slotOnSocketClose())); - - mVerified = true; - QString foo = "foo\0"; - mSocket->write(foo.toAscii(), foo.length()); - foo.clear(); - - emit bridgeConnect(); -} - -void UdpTransportBridge::slotOnSocketReceive() -{ - kDebug () << "Bridge (" << name() << ") RECEIVED " << mSocket->bytesAvailable() << " bytes."; - - QByteArray bytes(mSocket->bytesAvailable()); - mSocket->read(bytes.data(), bytes.size()); - // Write the data to the buffer. - mBuffer.write(bytes); - - if (mVerified == false && mBuffer.size() >= 4) - { - QByteArray foo = mBuffer.read(4); - if (QString(foo) == "foo"){ - kDebug (14140) << "Bridge (" << name() << ") CONNECTION verified."; - mVerified = true; - } - } - - while(mBuffer.size() > 0) - { - if (mBuffer.size() >= 4 && mLength == 0) - { - QByteArray array = mBuffer.read(4); - for (int i=0; i < 4; i++){ - ((char*)mLength)[i] = array[i]; - } - } - - if (mLength > 0 && mBuffer.size() >= mLength) - { - kDebug () << "Bridge (" << name() << ") read " << mLength << " bytes."; - bytes = mBuffer.read(mLength); - mLength = 0; -// Message message = mFormatter->readMessage(bytes, true); -// emit messageReceived(message); - } - else - { - kDebug () << "Bridge (" << name() << ") waiting for " << mLength << " bytes."; - break; - } - } -} -//END - -//BEGIN UDP Transport private slot methods -void UdpTransportBridge::slotOnSocketConnectTimeout() -{ - kDebug () << "Bridge (" << name() << ") CONNECT timeout."; - emit bridgeConnectTimeout(); - mSocket->deleteLater(); - mSocket = 0l; -} -//END - -UdpTransportBridge::Buffer::Buffer(quint32 length) -: QByteArray(length) -{ -} - -UdpTransportBridge::Buffer::~Buffer() -{ -} - -//BEGIN Public Methods - -void UdpTransportBridge::Buffer::write(const QByteArray& bytes) -{ - resize(size() + bytes.size()); - for (uint i=0; i < bytes.size(); i++){ - (*this)[size() + i] = bytes[i]; - } -} - -QByteArray UdpTransportBridge::Buffer::read(quint32 length) -{ - if (length >= size()) return QByteArray(); - - QByteArray buffer; - buffer.duplicate(data(), length); - - char *bytes = new char[size() - length]; - for(uint i=0; i < size() - length; i++){ - bytes[i] = data()[length + i]; - } - - duplicate(bytes, size() - length); - delete[] bytes; - - return buffer; -} - -//END -} - #include "transport.moc" --- trunk/KDE/kdenetwork/kopete/protocols/msn/transport.h #740637:740638 @@ -163,48 +163,6 @@ }; -class UdpTransportBridge : public TransportBridge -{ - Q_OBJECT - friend class Transport; - -public: - virtual ~UdpTransportBridge(); - -private: - UdpTransportBridge(const KNetwork::KInetSocketAddress& to, MessageFormatter* formatter, QObject* parent); - UdpTransportBridge(KNetwork::KClientSocketBase* socket, MessageFormatter* formatter, QObject* parent); - -protected slots: - virtual void slotOnConnect(); - virtual void slotOnDisconnect(); - virtual void slotOnError(int); - virtual void slotOnSocketClose(); - virtual void slotOnSocketConnect(); - virtual void slotOnSocketReceive(); - -private slots: - void slotOnSocketConnectTimeout(); - -signals: - void bridgeConnectTimeout(); - -private: - class Buffer : public QByteArray - { - public: - Buffer(quint32 length = 0); - ~Buffer(); - - public: - void write(const QByteArray& bytes); - QByteArray read(quint32 length); - }; - - Buffer mBuffer; - quint32 mLength; -}; - } #endif