58 lines
1.5 KiB
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;
|
|
} |