From 89e052995997c9a372d7deee6a9d31e100e10533 Mon Sep 17 00:00:00 2001 From: Ian Geiser Date: Sun, 8 Nov 2009 19:44:16 +0000 Subject: Added better examples for in band byte transfers --- .../example_3_ibbTransfer.pro | 0 .../example_3_ibbTransferSource.pro | 20 +++++ example/example_3_ibbTransferSource/ibbClient.cpp | 85 ++++++++++++++++++++++ example/example_3_ibbTransferSource/ibbClient.h | 51 +++++++++++++ example/example_3_ibbTransferSource/main.cpp | 39 ++++++++++ 5 files changed, 195 insertions(+) create mode 100644 example/example_3_ibbTransferSource/example_3_ibbTransfer.pro create mode 100644 example/example_3_ibbTransferSource/example_3_ibbTransferSource.pro create mode 100644 example/example_3_ibbTransferSource/ibbClient.cpp create mode 100644 example/example_3_ibbTransferSource/ibbClient.h create mode 100644 example/example_3_ibbTransferSource/main.cpp (limited to 'example/example_3_ibbTransferSource') diff --git a/example/example_3_ibbTransferSource/example_3_ibbTransfer.pro b/example/example_3_ibbTransferSource/example_3_ibbTransfer.pro new file mode 100644 index 00000000..e69de29b diff --git a/example/example_3_ibbTransferSource/example_3_ibbTransferSource.pro b/example/example_3_ibbTransferSource/example_3_ibbTransferSource.pro new file mode 100644 index 00000000..0777c6c0 --- /dev/null +++ b/example/example_3_ibbTransferSource/example_3_ibbTransferSource.pro @@ -0,0 +1,20 @@ +TEMPLATE = app + +TARGET = example_3_ibbTransferSource + +SOURCES += main.cpp \ + ibbClient.cpp + +HEADERS += ibbClient.h + +INCLUDEPATH += ../../source + +QT += network xml + +CONFIG += console debug_and_release + +CONFIG(debug, debug|release) { + LIBS += -L../../source/debug -lQXmppClient_d + } else { + LIBS += -L../../source/release -lQXmppClient + } diff --git a/example/example_3_ibbTransferSource/ibbClient.cpp b/example/example_3_ibbTransferSource/ibbClient.cpp new file mode 100644 index 00000000..bb13b87c --- /dev/null +++ b/example/example_3_ibbTransferSource/ibbClient.cpp @@ -0,0 +1,85 @@ +/* + * Copyright (C) 2008-2009 QXmpp Developers + * + * Author: + * Ian Reinhart Geiser + * + * Source: + * http://code.google.com/p/qxmpp + * + * This file is a part of QXmpp library. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + */ + + +#include "ibbClient.h" +#include "QXmppMessage.h" +#include "QXmppUtils.h" +#include "QXmppIbbTransferManager.h" +#include +#include + +ibbClient::ibbClient(QObject *parent) + : QXmppClient(parent) +{ + m_buffer = new QBuffer(this); + QByteArray bytes; + for( int idx = 0; idx < 1000; idx++ ) + bytes += generateStanzaHash().toLatin1(); + + m_buffer->setData( bytes ); + m_buffer->open(QIODevice::ReadOnly); + + connect( this, SIGNAL(connected()), + this, SLOT(slotConnected())); + connect( getIbbTransferManager(), SIGNAL(byteStreamCanceled(QString,QString)), + this, SLOT( slotByteStreamCanceled(QString,QString)) ); + connect( getIbbTransferManager(), SIGNAL(byteStreamClosed(QString,QString)), + this, SLOT( slotByteStreamClosed(QString,QString)) ); + connect( getIbbTransferManager(), SIGNAL( byteStreamOpened(QString)), + this, SLOT( slotByteStreamOpened(QString)) ); + connect( getIbbTransferManager(), SIGNAL( byteStreamRequestReceived(QString,QString)), + this, SLOT( slotByteStreamRequestReceived(QString,QString)) ); +} + +ibbClient::~ibbClient() +{ + +} + +void ibbClient::slotConnected() +{ + getIbbTransferManager()->sendByteStreamRequest( generateStanzaHash(), "client@geiseri.com/QXmpp", m_buffer ); +} + + +void ibbClient::slotByteStreamRequestReceived( const QString &sid, const QString &remoteJid ) +{ + qDebug() << "Remote JID:" << remoteJid << " asked for transfer"; + getIbbTransferManager()->acceptByteStreamRequest( sid, m_buffer ); +} + +void ibbClient::slotByteStreamClosed( const QString &sid , const QString &reason ) +{ + qDebug() << "Transmission done" << m_buffer->buffer(); +} + +void ibbClient::slotByteStreamCanceled( const QString &sid , const QString &reason ) +{ + qDebug() << "Transmission canceled" << reason; +} + +void ibbClient::slotByteStreamOpened( const QString &sid ) +{ + qDebug() << "Bytestream opened"; +} diff --git a/example/example_3_ibbTransferSource/ibbClient.h b/example/example_3_ibbTransferSource/ibbClient.h new file mode 100644 index 00000000..0a674d05 --- /dev/null +++ b/example/example_3_ibbTransferSource/ibbClient.h @@ -0,0 +1,51 @@ +/* + * Copyright (C) 2008-2009 QXmpp Developers + * + * Author: + * Ian Reinhart Geiser + * + * Source: + * http://code.google.com/p/qxmpp + * + * This file is a part of QXmpp library. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + */ + + +#ifndef IBBCLIENT_H +#define IBBCLIENT_H + +#include "QXmppClient.h" + +class QBuffer; + +class ibbClient : public QXmppClient +{ + Q_OBJECT + +public: + ibbClient(QObject *parent = 0); + ~ibbClient(); + +public slots: + void slotConnected(); + void slotByteStreamRequestReceived( const QString &sid, const QString &remoteJid ); + void slotByteStreamClosed( const QString &sid , const QString &reason ); + void slotByteStreamCanceled( const QString &sid , const QString &reason ); + void slotByteStreamOpened( const QString &sid ); +private: + QBuffer *m_buffer; + +}; + +#endif // IBBCLIENT_H diff --git a/example/example_3_ibbTransferSource/main.cpp b/example/example_3_ibbTransferSource/main.cpp new file mode 100644 index 00000000..b42dff1c --- /dev/null +++ b/example/example_3_ibbTransferSource/main.cpp @@ -0,0 +1,39 @@ +/* + * Copyright (C) 2008-2009 QXmpp Developers + * + * Author: + * Ian Reinhart Geiser + * + * Source: + * http://code.google.com/p/qxmpp + * + * This file is a part of QXmpp library. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + */ + + +#include +#include "ibbClient.h" +#include "QXmppLogger.h" + +int main(int argc, char *argv[]) +{ + QCoreApplication a(argc, argv); + + QXmppLogger::getLogger()->setLoggingType(QXmppLogger::STDOUT); + + ibbClient client; + client.getConfiguration().setUseSASLAuthentication( false ); + client.connectToServer("jabber.geiseri.com", "server", "Passw0rd", "geiseri.com"); + return a.exec(); +} -- cgit v1.2.3