port: move closing the IOCP port to it's own internal API

This commit is contained in:
Bert Belder 2017-09-25 18:10:44 +02:00
parent 3c2c4bfce7
commit fd83d12648
3 changed files with 14 additions and 1 deletions

View File

@ -43,6 +43,8 @@ int epoll_close(epoll_t port_handle) {
port_info = (ep_port_t*) port_handle;
ep_port_close(port_info);
return ep_port_delete(port_info);
}

View File

@ -41,10 +41,20 @@ ep_port_t* ep_port_new(HANDLE iocp) {
return port_info;
}
int ep_port_close(ep_port_t* port_info) {
HANDLE iocp = port_info->iocp;
port_info->iocp = NULL;
if (!CloseHandle(iocp))
return_error(-1);
return 0;
}
int ep_port_delete(ep_port_t* port_info) {
tree_node_t* tree_node;
if (!CloseHandle(port_info->iocp))
if (port_info->iocp != NULL && !CloseHandle(port_info->iocp))
return_error(-1);
port_info->iocp = NULL;

View File

@ -24,6 +24,7 @@ typedef struct ep_port {
} ep_port_t;
EPOLL_INTERNAL ep_port_t* ep_port_new(HANDLE iocp);
EPOLL_INTERNAL int ep_port_close(ep_port_t* port_info);
EPOLL_INTERNAL int ep_port_delete(ep_port_t* port_info);
EPOLL_INTERNAL int ep_port_update_events(ep_port_t* port_info);