Fotobot
Get data from your photovoltaic plant
Public Member Functions | Protected Member Functions | List of all members
Startup Class Reference

#include <startup.h>

Inheritance diagram for Startup:

Public Member Functions

 Startup (int argc, char *argv[])
 

Protected Member Functions

void start ()
 
void stop ()
 

Detailed Description

Helper class to install and run the application as a windows service.

Definition at line 17 of file startup.h.

Constructor & Destructor Documentation

Startup::Startup ( int  argc,
char *  argv[] 
)

Constructor

Definition at line 123 of file startup.cpp.

124  : QtService<QCoreApplication>(argc, argv, APPNAME) {
125  setServiceDescription(DESCRIPTION);
126  //setStartupType(AutoStartup);
127 }
#define DESCRIPTION
Definition: startup.cpp:27
#define APPNAME
Definition: startup.cpp:21

Member Function Documentation

void Startup::start ( )
protected

Start the service

Definition at line 30 of file startup.cpp.

30  {
31  // Initialize the core application
32  QCoreApplication* app = application();
33  app->setApplicationName(APPNAME);
34  app->setOrganizationName(ORGANISATION);
35  QString configFileName=Static::getConfigFileName();
36 
37  // Configure logging into files
38  QSettings* mainLogSettings=new QSettings(configFileName,QSettings::IniFormat,app);
39  mainLogSettings->beginGroup("mainLogFile");
40  QSettings* debugLogSettings=new QSettings(configFileName,QSettings::IniFormat,app);
41  debugLogSettings->beginGroup("debugLogFile");
42  Logger* logger=new DualFileLogger(mainLogSettings,debugLogSettings,10000,app);
43  Q_UNUSED(logger);
44 // logger->installMsgHandler();
45 
46  // Translations
47  QSettings localeSettings(configFileName, QSettings::IniFormat, app);
48  localeSettings.beginGroup("locale");
49  QString locale = localeSettings.value("locale", QLocale::system().name()).toString();
50  QTextCodec::setCodecForTr(QTextCodec::codecForName("utf8"));
51  QTranslator *translator = new QTranslator;
52  QString an = app->applicationName();
53  QString lp = QLibraryInfo::location(QLibraryInfo::TranslationsPath);
54  QString tf = an + "_" + locale;
55  QString l1 = "/usr/share/locale/";
56  QString l2 = "/usr/local/share/locale/";
57  QString l3 = QString("/usr/share/") + an;
58  QString tx = locale + "/LC_MESSAGES/" + an;
59  for (;;) {
60  if (translator->load (tf, lp ) ) break;
61  if (translator->load (tf, ".") ) break;
62  if (translator->load (tf, an ) ) break;
63  if (translator->load (tx, l1 ) ) break;
64  if (translator->load (tx, l2 ) ) break;
65  if (translator->load (tf, l3 ) ) break;
66  qWarning() << "Translations not loaded";
67  break;
68  }
69  app->installTranslator(translator);
70 
71  // Configure database file
72  QSettings* databaseSettings = new QSettings(configFileName,QSettings::IniFormat,app);
73  databaseSettings->beginGroup("database");
74  Static::db = new DATABASE(databaseSettings, app);
75  new MAINTENANCE();
76 
77  // Configure invertors
78  Static::invertors = new INVERTORS(app);
79  Static::invertors->openLines();
80 
81  // Startup interacebos restarter
82  Static::interfacebox = new INTERFACEBOX(app);
83  Static::interfacebox->setDatabase(Static::db);
84  Static::interfacebox->start();
85 
86  // Startup sun position calculations
87  Static::slunce = new SLUNCE(app);
89  geo = Static::db->geocoordinates();
90  Static::slunce->setObserver(geo.latitude.toDouble(), geo.longitude.toDouble());
91  Static::slunce->start();
92 
93  // Configure template loader and cache
94  QSettings* templateSettings=new QSettings(configFileName,QSettings::IniFormat,app);
95  templateSettings->beginGroup("templates");
96  Static::templateLoader=new TemplateCache(templateSettings,app);
97 
98  // Configure session store
99  QSettings* sessionSettings=new QSettings(configFileName,QSettings::IniFormat,app);
100  sessionSettings->beginGroup("sessions");
101  Static::sessionStore=new HttpSessionStore(sessionSettings,app);
102 
103  // Configure static file controller
104  QSettings* fileSettings=new QSettings(configFileName,QSettings::IniFormat,app);
105  fileSettings->beginGroup("docroot");
106  Static::staticFileController=new StaticFileController(fileSettings,app);
107 
108  // Configure and start the TCP listener
109  QSettings* listenerSettings=new QSettings(configFileName,QSettings::IniFormat,app);
110  listenerSettings->beginGroup("listener");
111  new HttpListener (listenerSettings, new RequestMapper(app), app);
112 
113  qWarning("Service has started");
114 }
Manages list of invertors and their threads.
Definition: invertors.h:36
Class describing database table GEOCOORDINATES.
Astronomické výpočty polohy slunce.
Definition: slunce.h:18
static StaticFileController * staticFileController
Definition: static.h:60
static HttpSessionStore * sessionStore
Definition: static.h:57
Virtual class for invertor communication.
Definition: interfacebox.h:29
static TemplateLoader * templateLoader
Definition: static.h:54
void setObserver(double lat, double lng)
Definition: slunce.cpp:40
void start(Priority priority=InheritPriority)
Starts the thread.
void openLines()
Opens all configured invertors.
Definition: invertors.cpp:93
Class for communication with database.
Definition: database.h:47
static QString getConfigFileName()
Definition: static.cpp:29
#define ORGANISATION
Definition: startup.cpp:24
DBT_GEOCOORDINATES geocoordinates()
Returns geocoordinates.
Definition: database.cpp:581
Simple database maintenance made every 24 hours.
Definition: maintenance.h:16
#define APPNAME
Definition: startup.cpp:21
void Startup::stop ( )
protected

Stop the service gracefully.

Warning
This method is not called when the program terminates abnormally, e.g. after a fatal error, or when killed from outside.

Definition at line 117 of file startup.cpp.

117  {
118  qWarning("Service has been stopped");
119  // QCoreApplication destroys all objects that have been created in start().
120 }

The documentation for this class was generated from the following files: