#include "tem/ctl.h" #include "network/network.h" #include "tools/toml/toml.h" #include #include #include int get_config(toml_table_t **server,char *path) { FILE* fp; char errbuf[200]; //打开配置文件,加载到缓存 fp = fopen(path,"r"); if(!fp) { perror("cannot parse\n"); return 0; } toml_table_t *tem = toml_parse_file(fp,errbuf,sizeof(errbuf)); tem = toml_table_in(tem,"app"); *server = tem; fclose(fp); return 1; } int main() { toml_table_t* server; if(!get_config(&server,"config/config.toml")) perror("load config error"); int port = (int)toml_int_in(server,"list_port").u.i; //加载配置文件,读取端口 log_manager *logsmanager=(log_manager*)malloc(sizeof(log_manager)); init_loger(logsmanager); Ctl *teml = init_tem(logsmanager); //初始化终端对象 int fifo[2]; if(pipe(fifo)==-1) perror("ERROR "); netm *networkmanager = (netm*)malloc(sizeof(netm)); init_networkmanager(networkmanager,fifo,logsmanager,port); //初始化网络管理器对象 pthread_t network_id; pthread_create(&network_id,NULL,networkmanager->run_network,(void*)networkmanager); //启动网络监听与线程池,并加载插件 teml->run(teml,fifo); //启动终端 pthread_join(network_id,NULL); //等待网络管理器进程结束 logs *log = logsmanager->log; while(log != NULL) { logs *buf = log; if(log->next !=NULL) log = log->next; free(buf); } //释放日志内存 free(teml); free(networkmanager); free(logsmanager); //释放内存 return 1; }