コード例 #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_destroy(lua_State *L)
{
	struct laura_eventloop *lloop;

	TRACE();
	aura_check_args(L, 1);

	if (!lua_isuserdata(L, 1))
		aura_typeerror(L, 2, "ludata (eventloop)");

	lloop = lua_touserdata(L, 1);
	if (!lloop)
		return luaL_error(L, "Failed to retrive arguments");

	if (!lloop->loop)
		return 0;

	aura_eventloop_destroy(lloop->loop);
	lloop->loop = NULL;

	return 0;
}