Exemplo n.º 1
0
void stfu_n_report(stfu_instance_t *i, stfu_report_t *r)
{
    stfu_assert(i);
	r->qlen = i->qlen;
	r->packet_in_count = i->period_packet_in_count;
	r->clean_count = i->period_clean_count;
	r->consecutive_good_count = i->consecutive_good_count;
	r->consecutive_bad_count = i->consecutive_bad_count;
}
Exemplo n.º 2
0
static int stfu_n_find_any_frame(stfu_instance_t *in, stfu_queue_t *queue, stfu_frame_t **r_frame, int force)
{
    uint32_t i = 0, best_index = 0;
    int best_diff = 1000000, cur_diff = 0;
    stfu_frame_t *frame = NULL, *best_frame = NULL;
    int newer = 0;
    stfu_assert(r_frame);
    
    *r_frame = NULL;

 top:

    if (force) {
        in->cur_ts = 0;
    }

    for(i = 0; i < queue->real_array_size; i++) {
        frame = &queue->array[i];
        
        if (!frame->was_read && in->cur_ts && frame->ts > in->cur_ts) {
            newer++;
        }

        cur_diff = abs((int)(frame->ts - in->cur_ts));

        if (!frame->was_read && cur_diff < best_diff) {
            best_diff = cur_diff;
            best_frame = frame;
            best_index = i;
        }
    }

    if (!force && !best_frame && newer) {
        force = 1;
        goto top;
    }

    if (best_frame) {
        *r_frame = best_frame;
        queue->last_index = best_index;
        best_frame->was_read = 1;
        in->period_packet_out_count++;
        in->session_packet_out_count++;
        return 1;
    }


    return 0;    
}
Exemplo n.º 3
0
static int stfu_n_find_any_frame(stfu_instance_t *in, stfu_queue_t *queue, stfu_frame_t **r_frame)
{
    uint32_t i = 0;
    stfu_frame_t *frame = NULL;

    stfu_assert(r_frame);

    *r_frame = NULL;

    for(i = 0; i < queue->real_array_size; i++) {
        frame = &queue->array[i];
        if (!frame->was_read) {
            *r_frame = frame;
            queue->last_index = i;
            frame->was_read = 1;
            in->period_packet_out_count++;
            in->session_packet_out_count++;
            return 1;
        }
    }

    return 0;
}