the first part of reimplementing has been done
now we have app object and singletons are only: log logn plugin and app git-svn-id: svn://ttmath.org/publicrep/winix/trunk@628 e52654a7-88a9-db11-a3e9-0013d4bc506e
This commit is contained in:
107
main/main.cpp
107
main/main.cpp
@@ -12,52 +12,39 @@
|
||||
#include <signal.h>
|
||||
#include <iostream>
|
||||
|
||||
#include "../core/requestcontroller.h"
|
||||
#include "../core/data.h"
|
||||
#include "../core/log.h"
|
||||
#include "../core/request.h"
|
||||
#include "../core/db.h"
|
||||
#include "../core/config.h"
|
||||
#include "../core/notify.h"
|
||||
#include "../core/plugin.h"
|
||||
#include "core/log.h"
|
||||
#include "core/app.h"
|
||||
#include "core/plugin.h"
|
||||
|
||||
// !! chwilowo
|
||||
#include "core/db.h"
|
||||
|
||||
|
||||
// singletons
|
||||
// first 'data' then 'log' then 'request'
|
||||
Data data;
|
||||
Log log;
|
||||
Log nlog; // notify log (used by another thread)
|
||||
Request request;
|
||||
Db db;
|
||||
Config config;
|
||||
RequestController req_controller;
|
||||
Notify notify;
|
||||
Plugin plugin;
|
||||
|
||||
|
||||
|
||||
/*
|
||||
application object
|
||||
*/
|
||||
App app;
|
||||
|
||||
|
||||
void signal_term(int)
|
||||
{
|
||||
plugin.Call(WINIX_CLOSE);
|
||||
app.Close();
|
||||
log << log1 << "winix stopped" << logend << logsave;
|
||||
|
||||
req_controller.SaveSessions();
|
||||
req_controller.DeleteAllPluginsData();
|
||||
log << log1 << "cmslu stopped" << logend << logsave;
|
||||
|
||||
// !! sprawdzic czemu ta flaga zatrzymania nie dzialala
|
||||
// i sprobowac pozbyc sie tego exita tutaj
|
||||
exit(0);
|
||||
}
|
||||
|
||||
|
||||
|
||||
void signal_hup(int)
|
||||
{
|
||||
log << log1 << "SIGHUP received" << logend;
|
||||
data.signal_hup = true;
|
||||
//config.ReadConfig(false); /* errors not to stdout */
|
||||
// plugins are not ready for reloading
|
||||
}
|
||||
|
||||
|
||||
|
||||
void print_syntax()
|
||||
{
|
||||
@@ -77,65 +64,61 @@ int main(int argv, char ** argc)
|
||||
return 1;
|
||||
}
|
||||
|
||||
data.system_start = time(0);
|
||||
data.config_file = argc[1];
|
||||
app.system.system_start = time(0);
|
||||
app.config.config_file = argc[1];
|
||||
|
||||
if( !config.ReadConfig(true) ) /* errors to stdout */
|
||||
if( !app.config.ReadConfig(true, false) ) /* errors to stdout, stdout in not closed */
|
||||
return 2;
|
||||
|
||||
if( app.stdout_is_closed )
|
||||
app.config.log_stdout = false;
|
||||
|
||||
// closing descriptors only at the beginning
|
||||
// !! temporary we do not close standard output for errors
|
||||
// client postgresql uses it for reporting warnings (I don't know why)
|
||||
//close(2);
|
||||
|
||||
if( !data.log_stdout )
|
||||
if( !app.config.log_stdout )
|
||||
{
|
||||
close(1);
|
||||
data.stdout_is_closed = true;
|
||||
app.stdout_is_closed = true;
|
||||
}
|
||||
|
||||
|
||||
log.Init(data.log_level, data.log_file, data.log_stdout, data.log_request);
|
||||
nlog.Init(data.log_level, data.log_notify_file, false, 1);
|
||||
db.Init(data.db_database, data.db_user, data.db_pass);
|
||||
log.Init(app.config.log_level, app.config.log_file, app.config.log_stdout, app.config.log_request);
|
||||
nlog.Init(app.config.log_level, app.config.log_notify_file, false, 1);
|
||||
app.db.Init(app.config.db_database, app.config.db_user, app.config.db_pass);
|
||||
|
||||
// data.base_server can be changed (stripped from 'http://' or a last slash)
|
||||
// app.config.base_server can be changed (stripped from 'http://' or a last slash)
|
||||
// it is done when the config is read
|
||||
log << log3 << "base_server: " << data.base_server << logend;
|
||||
log << log3 << "base_server: " << app.config.base_server << logend;
|
||||
|
||||
// load plugins before loading sessions - req_controller.LoadSessions()
|
||||
plugin.LoadPlugins(data.plugin_file);
|
||||
plugin.Call(WINIX_PLUGIN_INIT);
|
||||
// load plugins before loading sessions - session_manager.LoadSessions()
|
||||
// because some of the plugins can init your own session dates
|
||||
plugin.LoadPlugins(app.config.plugin_file);
|
||||
//plugin.Call(WINIX_PLUGIN_INIT);
|
||||
|
||||
request.Init();
|
||||
|
||||
if( !req_controller.Init() )
|
||||
if( !app.Init() )
|
||||
return 1;
|
||||
|
||||
// !! teraz mamy dwa katalogi z templetami
|
||||
if( !notify.Init() )
|
||||
return 2;
|
||||
|
||||
notify.ReadTemplates();
|
||||
app.notify.ReadTemplates(); // wrzucic do notify.Init() ?
|
||||
|
||||
signal(SIGTERM, signal_term);
|
||||
signal(SIGINT, signal_term);
|
||||
signal(SIGHUP, signal_hup);
|
||||
|
||||
req_controller.LoadSessions();
|
||||
log << log1 << "cmslu started" << logend << logsavenow;
|
||||
log << log1 << "winix started" << logend << logsavenow;
|
||||
|
||||
while( true )
|
||||
{
|
||||
//log << log2 << "checking for table consistency:" << logend;
|
||||
// !! zrobic wyjatek dla root
|
||||
//db.CheckAllUrlSubject();
|
||||
// !! wywalic to sprawdzanie
|
||||
//log << log2 << "checking for table consistency:" << logend;
|
||||
// !! zrobic wyjatek dla root
|
||||
//app.db.CheckAllUrlSubject();
|
||||
|
||||
req_controller.Loop();
|
||||
|
||||
if( data.signal_hup )
|
||||
data.signal_hup = false;
|
||||
}
|
||||
app.Start();
|
||||
|
||||
plugin.Call(WINIX_CLOSE);
|
||||
app.Close();
|
||||
log << log1 << "winix stopped" << logend << logsave;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
Reference in New Issue
Block a user