src/server/daemon/config.c

changeset 30
27c7511c0e34
parent 29
e8619defde14
child 31
280250e45ba6
equal deleted inserted replaced
29:e8619defde14 30:27c7511c0e34
41 41
42 #include "httplistener.h" 42 #include "httplistener.h"
43 #include "config.h" 43 #include "config.h"
44 #include "func.h" 44 #include "func.h"
45 #include "log.h" 45 #include "log.h"
46 #include "event.h"
47 #include "threadpools.h"
46 #include "configmanager.h" 48 #include "configmanager.h"
47 49
48 #include "vserver.h" 50 #include "vserver.h"
49 #include "../util/pblock.h" 51 #include "../util/pblock.h"
52 #include "../util/util.h"
50 53
51 pool_handle_t *cfg_pool; 54 pool_handle_t *cfg_pool;
52 55
53 // TODO: Funktion für ConfigDirective -> directive 56 // TODO: Funktion für ConfigDirective -> directive
54 // TODO: Funktion für UcxList parameter list -> pblock 57 // TODO: Funktion für UcxList parameter list -> pblock
143 146
144 /* handle config object */ 147 /* handle config object */
145 int hr = 0; 148 int hr = 0;
146 if(!sstrcmp(scfgobj->type, sstr("Runtime"))) { 149 if(!sstrcmp(scfgobj->type, sstr("Runtime"))) {
147 hr = cfg_handle_runtime(serverconfig, scfgobj); 150 hr = cfg_handle_runtime(serverconfig, scfgobj);
148 } else if(!sstrcmp(scfgobj->type, sstr("LogFile"))) { 151 } else if(!sstrcmp(scfgobj->type, sstr("EventHandler"))) {
149 //hr = cfg_handle_logfile(serverconfig, scfgobj); 152 hr = cfg_handle_eventhandler(serverconfig, scfgobj);
150 } else if(!sstrcmp(scfgobj->type, sstr("AuthDB"))) { 153 } else if(!sstrcmp(scfgobj->type, sstr("AuthDB"))) {
151 hr = cfg_handle_authdb(serverconfig, scfgobj); 154 hr = cfg_handle_authdb(serverconfig, scfgobj);
152 } else if(!sstrcmp(scfgobj->type, sstr("Listener"))) { 155 } else if(!sstrcmp(scfgobj->type, sstr("Listener"))) {
153 hr = cfg_handle_listener(serverconfig, scfgobj); 156 hr = cfg_handle_listener(serverconfig, scfgobj);
154 } else if(!sstrcmp(scfgobj->type, sstr("VirtualServer"))) { 157 } else if(!sstrcmp(scfgobj->type, sstr("VirtualServer"))) {
162 165
163 elm = elm->next; 166 elm = elm->next;
164 } 167 }
165 } 168 }
166 169
167 170 /* check event handler config */
171 if(check_event_handler_cfg() != 0) {
172 /* critical error */
173 return NULL;
174 }
175
176 /* check thread pool config */
177 if(check_thread_pool_cfg() != 0) {
178 /* critical error */
179 return NULL;
180 }
168 181
169 /* set VirtualServer for all listeners */ 182 /* set VirtualServer for all listeners */
170 UcxList *ls = serverconfig->listeners; 183 UcxList *ls = serverconfig->listeners;
171 while(ls) { 184 while(ls) {
172 HttpListener *listener = ls->data; 185 HttpListener *listener = ls->data;
232 int ret = init_log_file(&logcfg); 245 int ret = init_log_file(&logcfg);
233 246
234 free(logcfg.file); 247 free(logcfg.file);
235 free(logcfg.level); 248 free(logcfg.level);
236 249
250 return ret;
251 }
252
253 int cfg_handle_eventhandler(ServerConfiguration *c, ServerConfigObject *obj) {
254 EventHandlerConfig evcfg;
255
256 sstr_t name = cfg_directivelist_get_str(obj->directives, sstr("Name"));
257 sstr_t threads = cfg_directivelist_get_str(
258 obj->directives,
259 sstr("Threads"));
260 sstr_t isdefault = cfg_directivelist_get_str(
261 obj->directives,
262 sstr("Default"));
263
264 evcfg.name = name;
265
266 sstr_t s = sstrdup(threads);
267 evcfg.nthreads = atoi(s.ptr);
268 free(s.ptr);
269
270 evcfg.isdefault = util_getboolean(isdefault.ptr, 0);
271
272 int ret = create_event_handler(&evcfg);
273
237 return ret; 274 return ret;
238 } 275 }
239 276
240 int cfg_handle_authdb(ServerConfiguration *cfg, ServerConfigObject *obj) { 277 int cfg_handle_authdb(ServerConfiguration *cfg, ServerConfigObject *obj) {
241 /* TODO: authdb*/ 278 /* TODO: authdb*/

mercurial