summaryrefslogtreecommitdiff
path: root/src/wrap.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/wrap.cpp')
-rwxr-xr-xsrc/wrap.cpp139
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