Files
chat_rebot-connect-with-one…/c/main.c

58 lines
1.5 KiB
C

#include "tem/ctl.h"
#include "network/network.h"
#include "tools/toml/toml.h"
#include <unistd.h>
#include <stdio.h>
#include <stdlib.h>
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);
//等待网络管理器进程结束
free(teml);
free(networkmanager);
free(logsmanager);
//释放内存
return 1;
}