zeroconf: add version to avahi lib

Change-Id: Iedb59b74b1f9950abb0ca1d5adaaa594a465c0fd
Reviewed-by: Niels Weber <niels.2.weber@nokia.com>
Reviewed-by: Fawzi Mohamed <fawzi.mohamed@nokia.com>
This commit is contained in:
Fawzi Mohamed
2012-04-05 13:07:56 +02:00
parent 1f4caf5399
commit c45d49b027
3 changed files with 30 additions and 18 deletions

View File

@@ -33,6 +33,7 @@
#include "servicebrowser.h"
#include "servicebrowser_p.h"
#include <QtGlobal>
#include <QDebug>
#include <QLibrary>
#include <QString>
@@ -126,9 +127,10 @@ private:
QLibrary nativeLib;
public:
AvahiZConfLib(QString libName = QLatin1String("avahi"),
AvahiZConfLib(QString libName = QLatin1String("avahi-client"),
QString version = QLatin1String("3"),
ZConfLib::Ptr fallBack = ZConfLib::Ptr(0)) :
ZConfLib(fallBack), nativeLib(libName)
ZConfLib(fallBack), nativeLib(libName, version)
{
#ifndef ZCONF_AVAHI_STATIC_LINKING
// dynamic linking
@@ -370,8 +372,10 @@ public:
}
};
ZConfLib::Ptr ZConfLib::createAvahiLib(const QString &libName, ZConfLib::Ptr fallback) {
return ZConfLib::Ptr(new AvahiZConfLib(libName, fallback));
ZConfLib::Ptr ZConfLib::createAvahiLib(const QString &libName, const QString &version,
ZConfLib::Ptr fallback)
{
return ZConfLib::Ptr(new AvahiZConfLib(libName, version, fallback));
}
extern "C" void cAvahiResolveReply(
@@ -557,7 +561,9 @@ extern "C" int cAvahiPollFunction(struct pollfd *ufds, unsigned int nfds, int ti
namespace ZeroConf {
namespace Internal {
ZConfLib::Ptr ZConfLib::createAvahiLib(const QString &/*extraPaths*/, ZConfLib::Ptr fallback) {
ZConfLib::Ptr ZConfLib::createAvahiLib(const QString &/*lib*/, const QString &version,
ZConfLib::Ptr fallback)
{
return fallback;
}

View File

@@ -132,8 +132,8 @@ class ZeroConfLib
public:
ZeroConfLib();
ZConfLib::Ptr defaultLib();
void setDefaultLib(LibUsage usage, const QString &avahiLibName, const QString &dnsSdLibName,
const QString &dnsSdDaemonPath);
void setDefaultLib(LibUsage usage, const QString &avahiLibName, const QString &avahiVersion,
const QString &dnsSdLibName, const QString &dnsSdDaemonPath);
private:
static const char *defaultmDnsSdLibName;
@@ -153,7 +153,7 @@ Q_GLOBAL_STATIC(ZeroConfLib, zeroConfLibInstance)
#endif
ZeroConfLib::ZeroConfLib(): m_lock(QMutex::Recursive),
m_defaultLib(ZConfLib::createAvahiLib(QLatin1String("avahi-client"),
m_defaultLib(ZConfLib::createAvahiLib(QLatin1String("avahi-client"),QLatin1String("3"),
ZConfLib::createDnsSdLib(QLatin1String(defaultmDnsSdLibName),
ZConfLib::createEmbeddedLib(QLatin1String(defaultmDNSDaemonName)))))
{
@@ -169,7 +169,8 @@ ZConfLib::Ptr ZeroConfLib::defaultLib(){
}
void ZeroConfLib::setDefaultLib(LibUsage usage, const QString &avahiLibName,
const QString &dnsSdLibName, const QString &dnsSdDaemonPath){
const QString &avahiVersion, const QString &dnsSdLibName,
const QString &dnsSdDaemonPath){
QMutexLocker l(&m_lock);
switch (usage){
case (UseDnsSdOnly):
@@ -179,15 +180,16 @@ void ZeroConfLib::setDefaultLib(LibUsage usage, const QString &avahiLibName,
m_defaultLib = ZConfLib::createEmbeddedLib(dnsSdDaemonPath);
break;
case (UseAvahiOnly):
m_defaultLib = ZConfLib::createAvahiLib(avahiLibName);
m_defaultLib = ZConfLib::createAvahiLib(avahiLibName, avahiVersion);
break;
case (UseAvahiOrDnsSd):
m_defaultLib = ZConfLib::createAvahiLib(avahiLibName, ZConfLib::createDnsSdLib(dnsSdLibName));
m_defaultLib = ZConfLib::createAvahiLib(avahiLibName, avahiVersion,
ZConfLib::createDnsSdLib(dnsSdLibName));
break;
case (UseAvahiOrDnsSdOrEmbedded):
m_defaultLib = ZConfLib::createAvahiLib(
avahiLibName, ZConfLib::createDnsSdLib(dnsSdLibName,
ZConfLib::createEmbeddedLib(dnsSdDaemonPath)));
m_defaultLib = ZConfLib::createAvahiLib(avahiLibName, avahiVersion,
ZConfLib::createDnsSdLib(dnsSdLibName,
ZConfLib::createEmbeddedLib(dnsSdDaemonPath)));
break;
default:
qDebug() << "invalid usage " << usage;
@@ -583,10 +585,10 @@ void ServiceBrowser::autoRefresh()
\threadsafe
*/
void setDefaultZConfLib(LibUsage usage, const QString &avahiLibName, const QString &dnsSdLibName,
const QString &dnsSdDaemonPath)
void setDefaultZConfLib(LibUsage usage, const QString &avahiLibName, const QString &version,
const QString &dnsSdLibName,const QString &dnsSdDaemonPath)
{
zeroConfLibInstance()->setDefaultLib(usage, avahiLibName, dnsSdLibName, dnsSdDaemonPath);
zeroConfLibInstance()->setDefaultLib(usage, avahiLibName, version, dnsSdLibName, dnsSdDaemonPath);
}
namespace Internal {
@@ -1786,6 +1788,10 @@ void MainConnection::createConnection()
abortLib();
}
}
if (status() < Stopping)
appendError(ErrorMessage::NoteLevel,
tr("MainConncetion could sucessfully create a connection using lib %1")
.arg(lib->name()));
}
ZConfLib::RunLoopStatus MainConnection::handleEvent()

View File

@@ -123,7 +123,7 @@ public:
static Ptr createEmbeddedLib(const QString &daemonPath, Ptr fallback = Ptr(0));
static Ptr createDnsSdLib(const QString &libName, Ptr fallback = Ptr(0));
static Ptr createAvahiLib(const QString &libName, Ptr fallback = Ptr(0));
static Ptr createAvahiLib(const QString &libName, const QString &version, Ptr fallback = Ptr(0));
protected:
bool m_isOk;
QString m_errorMsg;