#include #include #include #include #include #include #include "options.h" #include "Routerin.H" //globally accessible config static struct sic_conf args_info; using std::cout; class MongooseHandler{ private: struct mg_context *ctx; //const char *options[]; unsigned short listenport; // = {"listening_ports", "8080", NULL}; public: //default listenport:8080 MongooseHandler(int listenport=8080): ctx(nullptr), listenport(listenport) { char portstring[8]; Routerin *routerin = Routerin::get_instance(); std::snprintf(portstring,8,"%d",this->listenport); const char *options[] = {"listening_ports",portstring,nullptr}; this->ctx= mg_start(options, routerin->event_route, nullptr); } //no copy constructor: MongooseHandler( const MongooseHandler &) = delete; //destructor stops the server ~MongooseHandler(){ if (this->ctx){ mg_stop(this->ctx); } } }; #ifdef DEBUG void dump_args() { cout << "value of port: " << args_info.port_arg << std::endl; cout << "value of daemonize: " << static_cast(args_info.daemonize_flag) << std::endl; cout << "value of listen_given: "<< args_info.listen_given << std::endl ; for (unsigned int i = 0; i < args_info.listen_given; i++) cout << "value of listen: " << args_info.listen_arg[i] <check_required = 0; if (cmd_parser_config_file("./siccc.conf", &args_info, params) != 0) { cmd_parser_free(&args_info); free(params); return false; } params->initialize = 0; params->override = 1; params->check_required = 1; //call the command line parser if (cmd_parser(argc, argv, &args_info) != 0) { cmd_parser_free(&args_info); free(params); return false; } return true; } static void signalhandler(int signum){ switch(signum){ case SIGINT: exit(0); break; default: std::cout << "called sighandler with signal " << signum << " FUPP! " << std::endl; } } static void exithandlerfunc(){ std::cout << "alles hat ein ende" << std::endl; } int main(int argc, char **argv) { if ( !configfile_parsing_action(argc, argv) ) { std::cerr << "ERROR ERROR BEEP" << std::endl; exit(1); } #ifdef DEBUG dump_args(); if (std::atexit(&exithandlerfunc)) exit(-4); #endif struct sigaction sa; sa.sa_handler = signalhandler; sigaction(SIGINT, &sa ,nullptr); MongooseHandler m(args_info.port_arg); if (!args_info.daemonize_flag) { while(1) getchar(); } return 0; }