优化退出流程,统一注册到on_exit(
This commit is contained in:
@ -83,6 +83,7 @@ int init_network(int port)
|
||||
addr.sin_port = htons(port); // 端口号必须网络字节序
|
||||
addr.sin_addr.s_addr = htonl(INADDR_ANY); // 0.0.0.0:本机所有网卡
|
||||
bind(fd, (struct sockaddr *)&addr, sizeof(addr));
|
||||
listen(fd,10);
|
||||
return fd;
|
||||
}
|
||||
|
||||
@ -126,7 +127,7 @@ int iss_work(netm *self,char *command)
|
||||
|
||||
void *pth_module(void *args_p)
|
||||
{
|
||||
args *argms = (args*)args_p;
|
||||
net_args *argms = (net_args*)args_p;
|
||||
pth_m *pmd = argms->pth;
|
||||
log_manager *logger = argms->log;
|
||||
//参数解析
|
||||
@ -172,7 +173,7 @@ int start_pool(netm *self)
|
||||
//为线程开辟管道
|
||||
pipe(self->pool[i].fifo_fd);
|
||||
//启动线程
|
||||
args arg;
|
||||
net_args arg;
|
||||
arg.pth =&self->pool[i];
|
||||
arg.log = self->logmanager;
|
||||
self->pool[i].status = 1;
|
||||
@ -184,8 +185,12 @@ int shutdown_pool(netm *self)
|
||||
{
|
||||
for(int i = 0;i<MAX_POOL;i++)
|
||||
{
|
||||
if(self->pool[i].status == -1)
|
||||
continue;
|
||||
self->pool[i].status = -1;
|
||||
close(self->pool[i].fifo_fd[1]);
|
||||
}
|
||||
return 1;
|
||||
}
|
||||
|
||||
int server_run(int port,int fifo_fd,netm *self)
|
||||
@ -196,6 +201,7 @@ int server_run(int port,int fifo_fd,netm *self)
|
||||
exit(EXIT_FAILURE);
|
||||
}
|
||||
struct epoll_event ev;
|
||||
//设置epoll同时监听控制管道与http请求
|
||||
ev.events = EPOLLIN;
|
||||
ev.data.fd = fifo_fd;
|
||||
epoll_ctl(epfd, EPOLL_CTL_ADD, fifo_fd, &ev);
|
||||
@ -228,7 +234,6 @@ int server_run(int port,int fifo_fd,netm *self)
|
||||
switch(command){
|
||||
case 'q':
|
||||
//退出逻辑
|
||||
server_quit(self);
|
||||
return 1;
|
||||
break;
|
||||
case 'u':
|
||||
|
@ -14,11 +14,11 @@ typedef struct pthread_module
|
||||
atomic_int status;
|
||||
}pth_m;
|
||||
|
||||
typedef struct args
|
||||
typedef struct net_args
|
||||
{
|
||||
log_manager *log;
|
||||
pth_m *pth;
|
||||
}args;
|
||||
}net_args;
|
||||
|
||||
typedef struct network_manager
|
||||
{
|
||||
|
Reference in New Issue
Block a user