/** * Close the node and free memory. * * @param node */ void aura_close(struct aura_node *node) { struct aura_eventloop *loop = aura_eventloop_get_data(node); if (node->tr->close) node->tr->close(node); if (loop) { if (loop->autocreated) aura_eventloop_destroy(loop); else aura_eventloop_del(node); } /* After transport shutdown we need to clean up remaining buffers */ cleanup_buffer_queue(&node->inbound_buffers); cleanup_buffer_queue(&node->outbound_buffers); aura_transport_release(node->tr); /* Check if we have an export table registered and nuke it */ if (node->tbl) aura_etable_destroy(node->tbl); /* Free file descriptors */ if (node->fds) free(node->fds); free(node); slog(6, SLOG_LIVE, "Transport closed"); }
static int l_eventloop_del(lua_State *L) { struct laura_node *lnode; TRACE(); aura_check_args(L, 1); lnode = lua_fetch_node(L, 1); if (!lnode) return luaL_error(L, "Failed to retrive arguments"); aura_eventloop_del(lnode->node); return 0; }