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/example.pro | 3 +- .../example_3_ibbTransfer.pro | 20 ----- example/example_3_ibbTransfer/ibbClient.cpp | 85 ---------------------- example/example_3_ibbTransfer/ibbClient.h | 51 ------------- example/example_3_ibbTransfer/main.cpp | 39 ---------- .../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 ++++++++++ example/example_4_ibbTransferTarget/README | 5 ++ .../example_4_ibbTransferTarget.pro | 21 ++++++ .../ibbTransferTarget.cpp | 59 +++++++++++++++ .../ibbTransferTarget.h | 46 ++++++++++++ example/example_4_ibbTransferTarget/main.cpp | 39 ++++++++++ 15 files changed, 367 insertions(+), 196 deletions(-) delete mode 100644 example/example_3_ibbTransfer/example_3_ibbTransfer.pro delete mode 100644 example/example_3_ibbTransfer/ibbClient.cpp delete mode 100644 example/example_3_ibbTransfer/ibbClient.h delete mode 100644 example/example_3_ibbTransfer/main.cpp 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 create mode 100644 example/example_4_ibbTransferTarget/README create mode 100644 example/example_4_ibbTransferTarget/example_4_ibbTransferTarget.pro create mode 100644 example/example_4_ibbTransferTarget/ibbTransferTarget.cpp create mode 100644 example/example_4_ibbTransferTarget/ibbTransferTarget.h create mode 100644 example/example_4_ibbTransferTarget/main.cpp (limited to 'example') diff --git a/example/example.pro b/example/example.pro index 40dae002..365b12ff 100644 --- a/example/example.pro +++ b/example/example.pro @@ -3,5 +3,6 @@ TEMPLATE = subdirs SUBDIRS = example_0_connected\ example_1_echoClient\ example_2_rosterHandling\ - example_3_ibbTransfer + example_3_ibbTransferSource\ + example_4_ibbTransferTarget diff --git a/example/example_3_ibbTransfer/example_3_ibbTransfer.pro b/example/example_3_ibbTransfer/example_3_ibbTransfer.pro deleted file mode 100644 index 82821cdc..00000000 --- a/example/example_3_ibbTransfer/example_3_ibbTransfer.pro +++ /dev/null @@ -1,20 +0,0 @@ -TEMPLATE = app - -TARGET = example_2_ibbTransfer - -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_ibbTransfer/ibbClient.cpp b/example/example_3_ibbTransfer/ibbClient.cpp deleted file mode 100644 index b80a216d..00000000 --- a/example/example_3_ibbTransfer/ibbClient.cpp +++ /dev/null @@ -1,85 +0,0 @@ -/* - * Copyright (C) 2008-2009 Manjeet Dahiya - * - * Author: - * Manjeet Dahiya - * - * 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_ibbTransfer/ibbClient.h b/example/example_3_ibbTransfer/ibbClient.h deleted file mode 100644 index 2c75d942..00000000 --- a/example/example_3_ibbTransfer/ibbClient.h +++ /dev/null @@ -1,51 +0,0 @@ -/* - * Copyright (C) 2008-2009 Manjeet Dahiya - * - * Author: - * Manjeet Dahiya - * - * 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_ibbTransfer/main.cpp b/example/example_3_ibbTransfer/main.cpp deleted file mode 100644 index 73474b95..00000000 --- a/example/example_3_ibbTransfer/main.cpp +++ /dev/null @@ -1,39 +0,0 @@ -/* - * Copyright (C) 2008-2009 Manjeet Dahiya - * - * Author: - * Manjeet Dahiya - * - * 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(); -} 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(); +} diff --git a/example/example_4_ibbTransferTarget/README b/example/example_4_ibbTransferTarget/README new file mode 100644 index 00000000..4c3ac681 --- /dev/null +++ b/example/example_4_ibbTransferTarget/README @@ -0,0 +1,5 @@ +This is a very simple bot which echoes the message sent to it. + +Run this example, send it a message from a friend of this bot. You will recieve the message back. + +This example shows how to receive and send messages. diff --git a/example/example_4_ibbTransferTarget/example_4_ibbTransferTarget.pro b/example/example_4_ibbTransferTarget/example_4_ibbTransferTarget.pro new file mode 100644 index 00000000..7fcac6b6 --- /dev/null +++ b/example/example_4_ibbTransferTarget/example_4_ibbTransferTarget.pro @@ -0,0 +1,21 @@ +TEMPLATE = app + +TARGET = example_4_ibbTransferTarget + +SOURCES += main.cpp \ + ibbTransferTarget.cpp + +HEADERS += ibbTransferTarget.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 + } + +OTHER_FILES += README diff --git a/example/example_4_ibbTransferTarget/ibbTransferTarget.cpp b/example/example_4_ibbTransferTarget/ibbTransferTarget.cpp new file mode 100644 index 00000000..c09efaac --- /dev/null +++ b/example/example_4_ibbTransferTarget/ibbTransferTarget.cpp @@ -0,0 +1,59 @@ +/* + * 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 "ibbTransferTarget.h" +#include "QXmppMessage.h" +#include "QXmppIbbTransferManager.h" +#include +#include + +IbbTransferTarget::IbbTransferTarget(QObject *parent) + : QXmppClient(parent) +{ + bool check = connect(getIbbTransferManager(), SIGNAL(byteStreamRequestReceived(QString,QString)), + this, SLOT(openReceived(QString,QString))); + Q_ASSERT(check); + + check = connect(getIbbTransferManager(), SIGNAL(byteStreamClosed(QString,QString)), + this, SLOT(closeReceived(QString,QString))); + Q_ASSERT(check); + + m_buffer = new QBuffer(this); + m_buffer->open(QIODevice::WriteOnly); +} + +IbbTransferTarget::~IbbTransferTarget() +{ +} + +void IbbTransferTarget::openReceived( const QString &sid, const QString& from) +{ + qDebug() << "Got open byte stream request from" << from; + getIbbTransferManager()->acceptByteStreamRequest(sid, m_buffer); +} + +void IbbTransferTarget::closeReceived( const QString& sid, const QString& reason) +{ + qDebug() << "Stream done:" << m_buffer->data(); +} diff --git a/example/example_4_ibbTransferTarget/ibbTransferTarget.h b/example/example_4_ibbTransferTarget/ibbTransferTarget.h new file mode 100644 index 00000000..fb2cb308 --- /dev/null +++ b/example/example_4_ibbTransferTarget/ibbTransferTarget.h @@ -0,0 +1,46 @@ +/* + * 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 IBBTRANSFERTARGET_H +#define IBBTRANSFERTARGET_H + +#include "QXmppClient.h" + +class QBuffer; +class IbbTransferTarget : public QXmppClient +{ + Q_OBJECT + +public: + IbbTransferTarget(QObject *parent = 0); + ~IbbTransferTarget(); + +public slots: + void openReceived( const QString&, const QString& ); + void closeReceived( const QString&, const QString& ); +private: + QBuffer *m_buffer; +}; + +#endif // IBBTRANSFERTARGET_H diff --git a/example/example_4_ibbTransferTarget/main.cpp b/example/example_4_ibbTransferTarget/main.cpp new file mode 100644 index 00000000..5cf19ade --- /dev/null +++ b/example/example_4_ibbTransferTarget/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 "ibbTransferTarget.h" +#include "QXmppLogger.h" + +int main(int argc, char *argv[]) +{ + QCoreApplication a(argc, argv); + + QXmppLogger::getLogger()->setLoggingType(QXmppLogger::STDOUT); + + IbbTransferTarget client; + client.getConfiguration().setUseSASLAuthentication( false ); + client.connectToServer("jabber.geiseri.com", "client", "Passw0rd", "geiseri.com"); + return a.exec(); +} -- cgit v1.2.3