1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127
|
/*
* Copyright (C) 2006 Justin Karneges
*
* 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.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
* 02110-1301 USA
*
*/
#ifndef IRISNETPLUGIN_H
#define IRISNETPLUGIN_H
#include "irisnetglobal.h"
#include "netinterface.h"
#include "netnames.h"
namespace XMPP {
class NetInterfaceProvider;
class NameProvider;
class ServiceProvider;
class IRISNET_EXPORT IrisNetProvider : public QObject
{
Q_OBJECT
public:
virtual ~IrisNetProvider();
virtual NetInterfaceProvider *createNetInterfaceProvider();
virtual NameProvider *createNameProviderInternet();
virtual NameProvider *createNameProviderLocal();
virtual ServiceProvider *createServiceProvider();
};
class IRISNET_EXPORT NetInterfaceProvider : public QObject
{
Q_OBJECT
public:
class Info
{
public:
QString id, name;
bool isLoopback;
QList<QHostAddress> addresses;
QHostAddress gateway;
};
NetInterfaceProvider(QObject *parent = 0) : QObject(parent) {}
// calling start should populate an initial list that can be
// immediately fetched. do not signal updated() for this.
virtual void start() = 0;
virtual QList<Info> interfaces() const = 0;
signals:
void updated();
};
class IRISNET_EXPORT NameProvider : public QObject
{
Q_OBJECT
public:
NameProvider(QObject *parent = 0) : QObject(parent) {}
virtual int resolve_start(const QByteArray &name, int qType, bool longLived) = 0;
virtual void resolve_stop(int id) = 0;
// transfer from local back to internet
virtual void resolve_localResultsReady(int id, const QList<XMPP::NameRecord> &results) = 0;
virtual void resolve_localError(int id, XMPP::NameResolver::Error e) = 0;
signals:
void resolve_resultsReady(int id, const QList<XMPP::NameRecord> &results);
void resolve_error(int id, XMPP::NameResolver::Error e);
// transfer from internet to local provider
void resolve_useLocal(int id, const QByteArray &name);
};
class IRISNET_EXPORT ServiceProvider : public QObject
{
Q_OBJECT
public:
ServiceProvider(QObject *parent = 0) : QObject(parent) {}
virtual int browse_start(const QString &type, const QString &domain) = 0;
virtual void browse_stop(int id) = 0;
virtual int resolve_start(const QByteArray &name) = 0;
virtual void resolve_stop(int id) = 0;
virtual int publish_start(const QString &instance, const QString &type, int port, const QMap<QString,QByteArray> &attributes) = 0;
virtual int publish_update(const QMap<QString,QByteArray> &attributes) = 0;
virtual void publish_cancel(int id) = 0;
virtual int publish_extra_start(int pub_id, const NameRecord &name) = 0;
virtual int publish_extra_update(int id, const NameRecord &name) = 0;
virtual void publish_extra_cancel(int id) = 0;
signals:
void browse_instanceAvailable(int id, const XMPP::ServiceInstance &instance);
void browse_instanceUnavailable(int id, const XMPP::ServiceInstance &instance);
void browse_error(int id);
void resolve_resultsReady(int id, const QHostAddress &address, int port);
void resolve_error(int id);
void publish_published(int id);
void publish_error(int id, XMPP::ServiceLocalPublisher::Error e);
void publish_extra_published(int id);
void publish_extra_error(int id, XMPP::ServiceLocalPublisher::Error e);
};
}
Q_DECLARE_INTERFACE(XMPP::IrisNetProvider, "com.affinix.irisnet.IrisNetProvider/1.0")
Q_DECLARE_INTERFACE(XMPP::NetInterfaceProvider, "com.affinix.irisnet.NetInterfaceProvider/1.0")
Q_DECLARE_INTERFACE(XMPP::NameProvider, "com.affinix.irisnet.NameProvider/1.0")
Q_DECLARE_INTERFACE(XMPP::ServiceProvider, "com.affinix.irisnet.ServiceProvider/1.0")
#endif
|