static int cm_teardown(void **state) { cm_ctx_t *ctx = *state; assert_non_null(ctx); cm_stop(ctx); cm_cleanup(ctx); sr_logger_cleanup(); return 0; }
int main() { //daemonize(); //process signal struct sigaction sa; sigemptyset(&sa.sa_mask); sa.sa_flags = 0; sa.sa_handler = handler; sigaction(SIGINT, &sa, NULL); json_object *jfile = json_object_from_file("config.json"); if(!jobject_ptr_isvalid(jfile)) { printf("open config.json failed!\n"); return -1; } json_object *jlog = json_util_get(jfile,"CONFIG.log"); if(!jlog) return -1; const char *strlog = json_object_get_string(jlog); log_open(&log_,strlog); json_object *jlog_level = json_util_get(jfile,"CONFIG.log_level"); if(jlog_level) { int log_level = json_object_get_int(jlog_level); log_level_set(log_,log_level); } loga(log_,"starting server!"); json_object_put(jfile); int rv; rv = segword_init(); if(rv < 0) { loga(log_,"segword_init failed!"); return -1; } redis_init(); rv = cm_start(); if(rv < 0) return -1; struct timeval delay; while(!stop_daemon) { delay.tv_sec = 0; delay.tv_usec = 100000; int rv = select(0,NULL,NULL,NULL,&delay); if(rv == 0) { continue; } } cm_stop(); cm_destroy(); redis_fini(); segword_fini(); printf("Normal exit!\n"); return 0; }