summaryrefslogtreecommitdiff
path: root/yhttpd/src/wrap.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'yhttpd/src/wrap.cpp')
-rw-r--r--yhttpd/src/wrap.cpp121
1 files changed, 121 insertions, 0 deletions
diff --git a/yhttpd/src/wrap.cpp b/yhttpd/src/wrap.cpp
new file mode 100644
index 0000000..251a575
--- /dev/null
+++ b/yhttpd/src/wrap.cpp
@@ -0,0 +1,121 @@
+#ifndef WRAP_CPP
+#define WRAP_CPP
+
+#include "wrap.h"
+
+using namespace std;
+
+
+conf* wrap::CONF = NULL;
+html* wrap::HTML = NULL;
+#ifdef LOGGING
+logd* wrap::LOGD = NULL;
+#endif
+#ifdef NCURSES
+ncur* wrap::NCUR = NULL;
+#endif
+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
+ if(NCUR)
+ {
+ NCUR->print( s_message );
+ }
+
+ else
+ {
+ cout << s_message << endl;
+ }
+#endif
+
+#ifdef SERVMSG
+ cout << s_message << endl;
+#endif
+
+#ifdef LOGGING
+
+ 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 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 system timer.
+ WRAP->TIMR = TIMR = new timr;
+
+
+ // Run threads
+ TIMR->run();
+}
+
+#endif