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:
2010-08-10 16:12:50 +00:00
parent 6897192364
commit 217cf1420b
191 changed files with 9529 additions and 7250 deletions

View File

@@ -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;
}