]> Some of my projects - localmylist.git/commitdiff
Make AniOni read its own settings.
authorAPTX <marek321@gmail.com>
Tue, 12 Jun 2012 20:52:08 +0000 (22:52 +0200)
committerAPTX <marek321@gmail.com>
Tue, 12 Jun 2012 20:52:08 +0000 (22:52 +0200)
anioni/anioni.cpp
anioni/anioni.h
anioni/config/anioni.ini

index c74c55b3110c1e8b715441527675257f25be47d2..5e0ac55dbf784026b9231ab202313eb53f99cf67 100644 (file)
@@ -10,6 +10,8 @@ AniOni::AniOni(int argc, char **argv) :
        QObject(), QtService<QCoreApplication>(argc, argv, "LocalMyList Daemon")
 {
        setServiceDescription("LocalMyList Daemon");
+       runUdpClient = false;
+       runRenameHandler = false;
 }
 
 void AniOni::handleUdpClientError()
@@ -59,21 +61,60 @@ void AniOni::start()
 #else
        QSettings s(QSettings::IniFormat, QSettings::SystemScope, "anioni", "anioni");
 #endif
-       LocalMyList::instance()->loadLocalSettings(s);
+       loadSettings(s);
 
        if (!LocalMyList::instance()->database()->connect())
        {
-               logMessage(QString("Failed to connect to database: %1").arg(LocalMyList::instance()->database()->connection().lastError().text()), QtServiceBase::Error);
+               log(QString("Failed to connect to database: %1").arg(LocalMyList::instance()->database()->connection().lastError().text()), QtServiceBase::Error);
                application()->exit(1);
+               return;
        }
        else
        {
                qDebug() << "Connected!";
        }
 
-       LocalMyList::instance()->setupUdpClient();
-       AniDBUdpClient::Client::instance()->setIdlePolicy(AniDBUdpClient::KeepAliveIdlePolicy);
-       connect(AniDBUdpClient::Client::instance(), SIGNAL(connectionError()), this, SLOT(handleUdpClientError()));
+       if (!LocalMyList::instance()->hostId())
+       {
+               log(QString("Hostname not in Database. Check settings"), QtServiceBase::Error);
+               application()->exit(1);
+               return;
+       }
+
+       if (runUdpClient)
+       {
+               LocalMyList::instance()->setupUdpClient();
+               AniDBUdpClient::Client::instance()->setIdlePolicy(AniDBUdpClient::KeepAliveIdlePolicy);
+               connect(AniDBUdpClient::Client::instance(), SIGNAL(connectionError()), this, SLOT(handleUdpClientError()));
+
+               LocalMyList::instance()->setupRequestHandler();
+       }
+
+       if (runRenameHandler)
+       {
+               LocalMyList::instance()->setupRenameHandler();
+       }
+
+       if (!(runUdpClient || runRenameHandler))
+       {
+               log(QString("AniOni was configured to do nothing. Check settings"), QtServiceBase::Error);
+               application()->exit(1);
+               return;
+       }
+}
 
-       LocalMyList::instance()->setupRequestHandler();
+void AniOni::loadSettings(QSettings &s)
+{
+       LocalMyList::instance()->loadLocalSettings(s);
+
+       s.beginGroup("anioni");
+               runUdpClient = s.value("runUdpClient", false).toBool();
+               runRenameHandler = s.value("runRenameHandler", false).toBool();
+               s.endGroup();
+}
+
+void AniOni::log(const QString &message, QtServiceBase::MessageType type)
+{
+       logMessage(message, type);
+       qWarning(message.toLocal8Bit());
 }
index d7bee5d296004a01ac7f0d56a10211e61980db18..4978c2251048b760c4da7d210cea2fc30a2f1577 100644 (file)
@@ -2,6 +2,7 @@
 #define ANIONI_H
 
 #include <QtServiceBase>
+#include <QSettings>
 
 class AniOni : public QObject, public QtService<QCoreApplication>
 {
@@ -18,6 +19,13 @@ protected slots:
        
 protected:
        void start();
+
+private:
+       void loadSettings(QSettings &s);
+       void log(const QString &message, QtServiceBase::MessageType type);
+
+       bool runUdpClient;
+       bool runRenameHandler;
 };
 
 #endif // ANIONI_H
index a23002098c5a7a9e85e5015e89933773b458cd44..2e84f7fe911eadea5b998732ac14c3a51fa488b7 100644 (file)
@@ -10,3 +10,4 @@ database=localmylist
 
 [anioni]
 runUdpClient=false
+runRenameHandler=false