Example #1
0
/* the stable insertion sort */
void
queue_sort(queue_t *queue,
    int (*cmp)(const queue_t *, const queue_t *))
{
    queue_t  *q, *prev, *next;

    q = queue_head(queue);
    if (q == queue_tail(queue)) {
        return;
    }
    for (q = queue_next(q); q != queue_sentinel(queue); q = next) {
        prev = queue_prev(q);
        next = queue_next(q);
        queue_remove(q);
        do {
            if (cmp(prev, q) <= 0) {
                break;
            }
            prev = queue_prev(prev);
        } while (prev != queue_sentinel(queue));
        queue_insert_head(prev, q);
    }
}
Example #2
0
int httproute_call(HttpSession *session)
{
	queue_t *route_queue=&session->server->routes;
	char *path=session->request.path;
	queue_t *q=NULL;
	HttpRoute *route;
	//printf("httproute_call  in !\n");
	if(queue_empty(route_queue))return 404;
	
	for(q = queue_prev(route_queue);
        q != queue_sentinel(route_queue);
        q = queue_last(q) ) {

        route = queue_data(q, HttpRoute, node);
		if(strcmp(path,route->path)==0 )
		{
			TraceInfo("route callback  found!\n");
			return route->func(session,route->arg);
		}
    }
	TraceInfo("route callback not found!\n");
	return 404;
}
Example #3
0
static __inline__
void
_delayed_call_enqueue(
	queue_t					queue,
	timer_call_t			call)
{
	timer_call_t	current;

	current = TC(queue_first(queue));

	while (TRUE) {
		if (	queue_end(queue, qe(current))			||
				call->deadline < current->deadline		) {
			current = TC(queue_prev(qe(current)));
			break;
		}

		current = TC(queue_next(qe(current)));
	}

	insque(qe(call), qe(current));

	call->state = DELAYED;
}
Example #4
0
gboolean spop_mpris2_player_previous(Mpris2Player* obj, GDBusMethodInvocation* invoc) {
    g_debug("mpris2: previous");
    queue_prev(TRUE);
    mpris2_player_complete_previous(obj, invoc);
    return TRUE;
}