void async_task_queue_destroy(async_task_queue_t *task_queue) { struct async_task *task; if (NULL == task_queue) { return; } while (NULL != task_queue->async_task) { task = task_queue->async_task; task_queue->async_task = task->next; free(task); } channel_detach(task_queue->channel); channel_destroy(task_queue->channel); closesocket(task_queue->fds[0]); closesocket(task_queue->fds[1]); lock_uninit(&task_queue->task_lock); free(task_queue); return; }
static inline void delete_udp_peer(udp_peer_t* peer) { channel_detach(peer->channel); channel_destroy(peer->channel); closesocket(peer->fd); free(peer); return; }
void tcp_connection_detach(tcp_connection_t *connection) { if (NULL == connection) { return; } log_debug("tcp_connection_detach: fd(%d)", connection->fd); channel_detach(connection->channel); connection->loop = NULL; return; }
static void delete_connection(tcp_connection_t *connection) { log_debug("connection to %s:%u will be destroyed", connection->peer_addr.ip, connection->peer_addr.port); channel_detach(connection->channel); channel_destroy(connection->channel); shutdown(connection->fd, SHUT_RDWR); close(connection->fd); buffer_destory(connection->in_buffer); buffer_destory(connection->out_buffer); free(connection); return; }
static void do_tcp_server_stop(void* userdata) { tcp_server_t *server = (tcp_server_t*)userdata; channel_detach(server->channel); channel_destroy(server->channel); server->channel = NULL; close(server->idle_fd); server->idle_fd = -1; close(server->fd); server->fd = -1; server->is_started = 0; return; }