Logo Search packages:      
Sourcecode: avahi version File versions  Download package

struct timeval* avahi_elapse_time ( struct timeval *  tv,
unsigned  ms,
unsigned  j 
) [read]

Fill *tv with the current time plus "ms" milliseconds plus an extra jitter of "j" milliseconds. Pass 0 for j if you don't want the jitter

Definition at line 88 of file timeval.c.

References AvahiUsec.

                                                                                      {
    assert(tv);

    gettimeofday(tv, NULL);

    if (msec)
        avahi_timeval_add(tv, (AvahiUsec) msec*1000);

    if (jitter) {
        static pthread_mutex_t mutex = PTHREAD_MUTEX_INITIALIZER;
        static int last_rand;
        static time_t timestamp = 0;

        time_t now;
        int r;
        
        now = time(NULL);

        pthread_mutex_lock(&mutex);
        if (now >= timestamp + 10) {
            timestamp = now;
            last_rand = rand();
        }
        
        r = last_rand;
        
        pthread_mutex_unlock(&mutex);

        /* We use the same jitter for 10 seconds. That way our
         * time events elapse in bursts which has the advantage that
         * packet data can be aggregated better */
        
        avahi_timeval_add(tv, (AvahiUsec) (jitter*1000.0*r/(RAND_MAX+1.0)));
    }
        
    return tv;
}


Generated by  Doxygen 1.6.0   Back to index