int main(int argc, char *argv[]) { program_options_t po; memset(&po, 0, sizeof(program_options_t)); /*po.frontend = "tcp://127.0.0.1:19977";*/ /*po.backend = "tcp://127.0.0.1:19978";*/ po.frontend = "tcp://*:19977"; po.backend = "tcp://*:19978"; po.is_daemon = 0; po.log_level = LOG_INFO; int ch, longindex; while ((ch = getopt_long(argc, argv, short_options, long_options, &longindex)) >= 0) { switch (ch) { case 'f': po.frontend = optarg; break; case 'b': po.backend = optarg; break; case 'd': po.is_daemon = 1; break; case 'v': po.log_level = LOG_DEBUG; break; case 't': po.log_level = LOG_TRACE; break; case 'h': usage(0); break; default: usage(1); break; } } /* -------- Init logger -------- */ char root_dir[NAME_MAX]; get_instance_parent_full_path(root_dir, NAME_MAX); char log_dir[NAME_MAX]; sprintf(log_dir, "%s/log", root_dir); mkdir_if_not_exist(log_dir); char logfile[PATH_MAX]; sprintf(logfile, "%s/%s.log", log_dir, program_name); if (log_init(program_name, LOG_SPACE_SIZE, po.is_daemon, po.log_level, logfile)) return -1; if ( po.is_daemon ){ return daemon_fork(daemon_loop, (void*)&po); } else return run_broker(po.frontend, po.backend, po.log_level >= LOG_DEBUG ? 1 : 0); }
int server_init(server_t *server) { assert(server!= NULL); pthread_mutex_init(&server->send_pending_lock, NULL); pthread_cond_init(&server->send_pending_cond, NULL); UNUSED int r; get_instance_parent_full_path(server->root_dir, NAME_MAX); sprintf(server->storage.storage_dir, "%s/data/storage", server->root_dir); if ( mkdir_if_not_exist(server->storage.storage_dir) != 0 ){ error_log("mkdir %s failed.", server->storage.storage_dir); return -1; } char log_dir[NAME_MAX]; sprintf(log_dir, "%s/data/log", server->root_dir); if ( mkdir_if_not_exist(log_dir) != 0 ) { error_log("mkdir %s failed.", log_dir); return -1; } /*r = storage_init(&server->storage);*/ int i; for ( i = 0 ; i < VNODES ; i++ ){ vnode_t *vnode = vnode_new(server->storage.storage_dir, i); if ( vnode == NULL ){ error_log("vnode_init() failed. id:%d", i); return -1; } server->vnodes[i] = vnode; } /* logfile */ for ( i = 0 ; i < LOGFILES ; i++ ) { char logfile_name[NAME_MAX]; sprintf(logfile_name, "%s/%02d.log", log_dir, i); logfile_t *logfile = logfile_new(i, logfile_name); if ( logfile_open(logfile, 1) != 0 ) { error_log("logfile_open(%d) failed.", i); return -1; } server->logfiles[i] = logfile; } /* FIXME */ r = init_server_work_queue(server); if ( r != 0 ){ error_log("init_server_work_queue() failed."); return -1; } return 0; }