diff -r e8619defde14 -r 27c7511c0e34 src/server/daemon/config.c --- a/src/server/daemon/config.c Wed May 16 12:47:28 2012 +0200 +++ b/src/server/daemon/config.c Thu May 24 12:51:52 2012 +0200 @@ -43,10 +43,13 @@ #include "config.h" #include "func.h" #include "log.h" +#include "event.h" +#include "threadpools.h" #include "configmanager.h" #include "vserver.h" #include "../util/pblock.h" +#include "../util/util.h" pool_handle_t *cfg_pool; @@ -145,8 +148,8 @@ int hr = 0; if(!sstrcmp(scfgobj->type, sstr("Runtime"))) { hr = cfg_handle_runtime(serverconfig, scfgobj); - } else if(!sstrcmp(scfgobj->type, sstr("LogFile"))) { - //hr = cfg_handle_logfile(serverconfig, scfgobj); + } else if(!sstrcmp(scfgobj->type, sstr("EventHandler"))) { + hr = cfg_handle_eventhandler(serverconfig, scfgobj); } else if(!sstrcmp(scfgobj->type, sstr("AuthDB"))) { hr = cfg_handle_authdb(serverconfig, scfgobj); } else if(!sstrcmp(scfgobj->type, sstr("Listener"))) { @@ -164,7 +167,17 @@ } } - + /* check event handler config */ + if(check_event_handler_cfg() != 0) { + /* critical error */ + return NULL; + } + + /* check thread pool config */ + if(check_thread_pool_cfg() != 0) { + /* critical error */ + return NULL; + } /* set VirtualServer for all listeners */ UcxList *ls = serverconfig->listeners; @@ -237,6 +250,30 @@ return ret; } +int cfg_handle_eventhandler(ServerConfiguration *c, ServerConfigObject *obj) { + EventHandlerConfig evcfg; + + sstr_t name = cfg_directivelist_get_str(obj->directives, sstr("Name")); + sstr_t threads = cfg_directivelist_get_str( + obj->directives, + sstr("Threads")); + sstr_t isdefault = cfg_directivelist_get_str( + obj->directives, + sstr("Default")); + + evcfg.name = name; + + sstr_t s = sstrdup(threads); + evcfg.nthreads = atoi(s.ptr); + free(s.ptr); + + evcfg.isdefault = util_getboolean(isdefault.ptr, 0); + + int ret = create_event_handler(&evcfg); + + return ret; +} + int cfg_handle_authdb(ServerConfiguration *cfg, ServerConfigObject *obj) { /* TODO: authdb*/