示例#1
0
文件: aura.c 项目: RC-MODULE/matlab
/**
 * 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");
}
示例#2
0
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;
}