diff options
Diffstat (limited to 'src/wrap.cpp')
| -rwxr-xr-x | src/wrap.cpp | 139 |
1 files changed, 123 insertions, 16 deletions
diff --git a/src/wrap.cpp b/src/wrap.cpp index a0e1443..e071cc9 100755 --- a/src/wrap.cpp +++ b/src/wrap.cpp @@ -6,39 +6,146 @@ using namespace std; //<<* -chat* wrap::CHAT; +chat* wrap::CHAT = NULL; #ifdef DATABASE -data* wrap::DATA; +data* wrap::DATA = NULL; #endif -gcol* wrap::GCOL; -sman* wrap::SMAN; -modl* wrap::MODL; +gcol* wrap::GCOL = NULL; +sman* wrap::SMAN = NULL; +modl* wrap::MODL = NULL; //*>> -conf* wrap::CONF; -html* wrap::HTML; +conf* wrap::CONF = NULL; +html* wrap::HTML = NULL; #ifdef LOGGING -logd* wrap::LOGD; +logd* wrap::LOGD = NULL; #endif #ifdef NCURSES -ncur* wrap::NCUR; +ncur* wrap::NCUR = NULL; #endif -sock* wrap::SOCK; -stats* wrap::STAT; -timr* wrap::TIMR; -dynamic_wrap* wrap::WRAP; +sock* wrap::SOCK = NULL; +stats* wrap::STAT = NULL; +timr* wrap::TIMR = NULL; +pool* wrap::POOL = NULL; +dynamic_wrap* wrap::WRAP = NULL; void wrap::system_message( string s_message ) { #ifdef NCURSES - wrap::NCUR->print( s_message ); + if(NCUR) + { + NCUR->print( s_message ); + } + + else + { + cout << s_message << endl; + } #endif + #ifdef SERVMSG - cout << s_message << endl; + cout << s_message << endl; #endif + #ifdef LOGGING - wrap::LOGD->log_simple_line( s_message + "\n" ); + + LOGD->log_simple_line( s_message + "\n" ); #endif } + +void +wrap::init_wrapper(map<string,string>* p_main_loop_params) +{ + // Init the dynamic wrapper (is needed to pass all wrapped objects through a single pointer). + WRAP = new dynamic_wrap; + + // Init the config manager. + WRAP->CONF = CONF = new conf( CONFILE, p_main_loop_params ); + delete p_main_loop_params, + + // Init the statistic manager. + WRAP->STAT = STAT = new stats; + + // Init the html-template manager. + WRAP->HTML = HTML = new html; + +#ifdef LOGGING + // Init the system message logd + WRAP->LOGD = LOGD = new logd( CONF->get_elem("httpd.logging.systemfile"), + CONF->get_elem("httpd.logging.systemlines") ); +#endif + + //<<* + // Init the session manager. + WRAP->SMAN = SMAN = new sman; + //*>> + // Init the socket manager. + int i_port = tool::string2int( wrap::CONF->get_elem( "httpd.serverport" ) ); + +#ifndef OPENSSL + + WRAP->SOCK = SOCK = new sock; +#else + + WRAP->SOCK = SOCK = new sslsock; +#endif + + // create the server socket and set it up to accept connections. + if(SOCK->_make_server_socket ( i_port ) <= 0) + { + system_message(SOCKER1); + exit(-1); + } + +#ifdef NCURSES + + WRAP->NCUR = NCUR = new ncur; // init the ncurses admin interface. + NCUR->run(); // run the thread + + // Wait until ncurses interface has been initialized. + do + { + usleep(1000); + } + while ( ! NCUR->is_ready() ); + + HTML->print_cached(0); +#else +#ifdef CLI + + cli* p_cli = new cli; + p_cli->run(); +#endif +#endif + + // Init the thread pool + WRAP->POOL = POOL = new pool; + + //<<* + // Init the chat manager. + WRAP->CHAT = CHAT = new chat; + //*>> + + // Init the system timer. + WRAP->TIMR = TIMR = new timr; + + //<<* + // Init the module-loader manager. + WRAP->MODL = MODL = new modl; + + // Init the garbage collector + WRAP->GCOL = GCOL = new gcol; + + // Init the data manager. +#ifdef DATABASE + + WRAP->DATA = DATA = new data; +#endif + //*>> + + // Run threads + TIMR->run(); +} + #endif |
