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

View File

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

View File

@@ -123,7 +123,7 @@ public:
static Ptr createEmbeddedLib(const QString &daemonPath, Ptr fallback = Ptr(0)); static Ptr createEmbeddedLib(const QString &daemonPath, Ptr fallback = Ptr(0));
static Ptr createDnsSdLib(const QString &libName, 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: protected:
bool m_isOk; bool m_isOk;
QString m_errorMsg; QString m_errorMsg;