Small fixes to banner delays and daemon's startup parameters.
[jenirok] / src / gui / daemon.cpp
1 /*
2  * This file is part of Jenirok.
3  *
4  * Jenirok is free software: you can redistribute it and/or modify
5  * it under the terms of the GNU General Public License as published by
6  * the Free Software Foundation, either version 3 of the License, or
7  * (at your option) any later version.
8  *
9  * Jenirok is distributed in the hope that it will be useful,
10  * but WITHOUT ANY WARRANTY; without even the implied warranty of
11  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
12  * GNU General Public License for more details.
13  *
14  * You should have received a copy of the GNU General Public License
15  * along with Jenirok.  If not, see <http://www.gnu.org/licenses/>.
16  *
17  */
18
19 #include <QtCore/QProcess>
20 #include <QDebug>
21 #include "daemon.h"
22
23 namespace
24 {
25     const QString DAEMON_NAME = "jenirokd";
26     const QString INIT_DIR = "/etc/init.d";
27 }
28
29 bool Daemon::start()
30 {
31     QProcess proc;
32     proc.start(INIT_DIR + "/" + DAEMON_NAME, QStringList() << "start");
33
34     proc.waitForStarted();
35     proc.waitForFinished();
36
37     if(proc.exitCode() != 0)
38     {
39         return false;
40     }
41
42     return true;
43 }
44
45 bool Daemon::stop()
46 {
47     QProcess proc;
48     proc.start(INIT_DIR + "/" + DAEMON_NAME, QStringList() << "stop");
49
50     proc.waitForStarted();
51     proc.waitForFinished();
52
53     if(proc.exitCode() != 0)
54     {
55         return false;
56     }
57
58     return true;
59 }
60
61 bool Daemon::restart()
62 {
63     stop();
64     return start();
65 }
66
67 bool Daemon::isRunning()
68 {
69     QProcess proc;
70
71     proc.start("pgrep", QStringList() << "-n" << DAEMON_NAME);
72
73     if(!proc.waitForStarted())
74     {
75         return false;
76     }
77
78     if(!proc.waitForFinished())
79     {
80         return false;
81     }
82
83     QString result = proc.readAll();
84
85     return !result.isEmpty();
86 }
87
88 Daemon::Daemon()
89 {
90 }