Lines Matching refs:delay

398 netdelay_lookup_session( NetDelay  delay, Session  info )
400 Session* pnode = &delay->sessions;
422 /* called by the delay's timer on expiration */
424 netdelay_expires( NetDelay delay )
431 for (session = delay->sessions; session != NULL; session = session->next)
441 delay->send_func( packet->data, packet->size, packet->opaque );
455 qemu_mod_timer( delay->timer, rearm_time );
462 NetDelay delay = qemu_malloc(sizeof(*delay));
464 delay->sessions = NULL;
465 delay->num_sessions = 0;
466 delay->timer = qemu_new_timer_ms( SHAPER_CLOCK,
468 delay );
469 delay->active = 0;
470 delay->min_ms = 0;
471 delay->max_ms = 0;
473 delay->send_func = send_func;
475 return delay;
480 netdelay_set_latency( NetDelay delay, int min_ms, int max_ms )
483 while (delay->sessions) {
484 Session session = delay->sessions;
485 delay->sessions = session->next;
489 delay->send_func( packet->data, packet->size, packet->opaque );
492 delay->num_sessions--;
495 delay->min_ms = min_ms;
496 delay->max_ms = max_ms;
497 delay->active = (min_ms <= max_ms) && min_ms > 0;
501 netdelay_send( NetDelay delay, const void* data, size_t size )
503 netdelay_send_aux(delay, data, size, NULL);
508 netdelay_send_aux( NetDelay delay, const void* data, size_t size, void* opaque )
510 if (delay->active && !_packet_is_internal(data, size)) {
517 Session* lookup = netdelay_lookup_session( delay, info );
524 delay->num_sessions -= 1;
530 Session* lookup = netdelay_lookup_session( delay, info );
543 int latency = delay->min_ms;
544 int range = delay->max_ms - delay->min_ms;
549 //fprintf(stderr, "NetDelay:RST: delay creation for %s\n", session_to_string(info) );
552 session->next = delay->sessions;
553 delay->sessions = session;
554 delay->num_sessions += 1;
566 netdelay_expires(delay);
572 delay->send_func( (void*)data, size, opaque );
577 netdelay_destroy( NetDelay delay )
579 if (delay) {
580 while (delay->sessions) {
581 Session session = delay->sessions;
582 delay->sessions = session->next;
584 delay->num_sessions -= 1;
586 delay->active = 0;
587 qemu_free( delay );