port: access ep_sock_t.tree_node and ep_sock_t.queue_node through getters
This commit is contained in:
parent
fb9820b06c
commit
74d7624afd
36
src/port.c
36
src/port.c
@ -96,12 +96,12 @@ int ep_port_delete(ep_port_t* port_info) {
|
||||
assert(port_info->iocp == NULL);
|
||||
|
||||
while ((tree_node = tree_root(&port_info->sock_tree)) != NULL) {
|
||||
ep_sock_t* sock_info = container_of(tree_node, ep_sock_t, tree_node);
|
||||
ep_sock_t* sock_info = ep_sock_from_tree_node(tree_node);
|
||||
ep_sock_force_delete(port_info, sock_info);
|
||||
}
|
||||
|
||||
while ((queue_node = queue_first(&port_info->sock_deleted_queue)) != NULL) {
|
||||
ep_sock_t* sock_info = container_of(queue_node, ep_sock_t, queue_node);
|
||||
ep_sock_t* sock_info = ep_sock_from_queue_node(queue_node);
|
||||
ep_sock_force_delete(port_info, sock_info);
|
||||
}
|
||||
|
||||
@ -126,7 +126,7 @@ static int _ep_port_update_events(ep_port_t* port_info) {
|
||||
* it. */
|
||||
while (!queue_empty(sock_update_queue)) {
|
||||
queue_node_t* queue_node = queue_first(sock_update_queue);
|
||||
ep_sock_t* sock_info = container_of(queue_node, ep_sock_t, queue_node);
|
||||
ep_sock_t* sock_info = ep_sock_from_queue_node(queue_node);
|
||||
|
||||
if (ep_sock_update(port_info, sock_info) < 0)
|
||||
return -1;
|
||||
@ -342,48 +342,50 @@ int ep_port_ctl(ep_port_t* port_info,
|
||||
int ep_port_register_socket_handle(ep_port_t* port_info,
|
||||
ep_sock_t* sock_info,
|
||||
SOCKET socket) {
|
||||
if (tree_add(&port_info->sock_tree, &sock_info->tree_node, socket) < 0)
|
||||
if (tree_add(
|
||||
&port_info->sock_tree, ep_sock_to_tree_node(sock_info), socket) < 0)
|
||||
return_error(-1, ERROR_ALREADY_EXISTS);
|
||||
return 0;
|
||||
}
|
||||
|
||||
void ep_port_unregister_socket_handle(ep_port_t* port_info,
|
||||
ep_sock_t* sock_info) {
|
||||
tree_del(&port_info->sock_tree, &sock_info->tree_node);
|
||||
tree_del(&port_info->sock_tree, ep_sock_to_tree_node(sock_info));
|
||||
}
|
||||
|
||||
ep_sock_t* ep_port_find_socket(ep_port_t* port_info, SOCKET socket) {
|
||||
ep_sock_t* sock_info = safe_container_of(
|
||||
tree_find(&port_info->sock_tree, socket), ep_sock_t, tree_node);
|
||||
if (sock_info == NULL)
|
||||
tree_node_t* tree_node = tree_find(&port_info->sock_tree, socket);
|
||||
if (tree_node == NULL)
|
||||
return_error(NULL, ERROR_NOT_FOUND);
|
||||
return sock_info;
|
||||
return ep_sock_from_tree_node(tree_node);
|
||||
}
|
||||
|
||||
void ep_port_request_socket_update(ep_port_t* port_info,
|
||||
ep_sock_t* sock_info) {
|
||||
if (queue_enqueued(&sock_info->queue_node))
|
||||
if (queue_enqueued(ep_sock_to_queue_node(sock_info)))
|
||||
return;
|
||||
queue_append(&port_info->sock_update_queue, &sock_info->queue_node);
|
||||
queue_append(&port_info->sock_update_queue,
|
||||
ep_sock_to_queue_node(sock_info));
|
||||
}
|
||||
|
||||
void ep_port_cancel_socket_update(ep_port_t* port_info, ep_sock_t* sock_info) {
|
||||
unused_var(port_info);
|
||||
if (!queue_enqueued(&sock_info->queue_node))
|
||||
if (!queue_enqueued(ep_sock_to_queue_node(sock_info)))
|
||||
return;
|
||||
queue_remove(&sock_info->queue_node);
|
||||
queue_remove(ep_sock_to_queue_node(sock_info));
|
||||
}
|
||||
|
||||
void ep_port_add_deleted_socket(ep_port_t* port_info, ep_sock_t* sock_info) {
|
||||
if (queue_enqueued(&sock_info->queue_node))
|
||||
if (queue_enqueued(ep_sock_to_queue_node(sock_info)))
|
||||
return;
|
||||
queue_append(&port_info->sock_deleted_queue, &sock_info->queue_node);
|
||||
queue_append(&port_info->sock_deleted_queue,
|
||||
ep_sock_to_queue_node(sock_info));
|
||||
}
|
||||
|
||||
void ep_port_remove_deleted_socket(ep_port_t* port_info,
|
||||
ep_sock_t* sock_info) {
|
||||
unused_var(port_info);
|
||||
if (!queue_enqueued(&sock_info->queue_node))
|
||||
if (!queue_enqueued(ep_sock_to_queue_node(sock_info)))
|
||||
return;
|
||||
queue_remove(&sock_info->queue_node);
|
||||
queue_remove(ep_sock_to_queue_node(sock_info));
|
||||
}
|
||||
|
||||
16
src/sock.c
16
src/sock.c
@ -375,3 +375,19 @@ int ep_sock_feed_event(ep_port_t* port_info,
|
||||
|
||||
return ev_count;
|
||||
}
|
||||
|
||||
queue_node_t* ep_sock_to_queue_node(ep_sock_t* sock_info) {
|
||||
return &sock_info->queue_node;
|
||||
}
|
||||
|
||||
ep_sock_t* ep_sock_from_tree_node(tree_node_t* tree_node) {
|
||||
return container_of(tree_node, ep_sock_t, tree_node);
|
||||
}
|
||||
|
||||
tree_node_t* ep_sock_to_tree_node(ep_sock_t* sock_info) {
|
||||
return &sock_info->tree_node;
|
||||
}
|
||||
|
||||
ep_sock_t* ep_sock_from_queue_node(queue_node_t* queue_node) {
|
||||
return container_of(queue_node, ep_sock_t, queue_node);
|
||||
}
|
||||
|
||||
@ -32,4 +32,9 @@ WEPOLL_INTERNAL int ep_sock_feed_event(ep_port_t* port_info,
|
||||
OVERLAPPED* overlapped,
|
||||
struct epoll_event* ev);
|
||||
|
||||
WEPOLL_INTERNAL ep_sock_t* ep_sock_from_queue_node(queue_node_t* queue_node);
|
||||
WEPOLL_INTERNAL queue_node_t* ep_sock_to_queue_node(ep_sock_t* sock_info);
|
||||
WEPOLL_INTERNAL ep_sock_t* ep_sock_from_tree_node(tree_node_t* tree_node);
|
||||
WEPOLL_INTERNAL tree_node_t* ep_sock_to_tree_node(ep_sock_t* sock_info);
|
||||
|
||||
#endif /* WEPOLL_SOCK_H_ */
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user