File: dates.c

package info (click to toggle)
vreng 1.6.3-3
  • links: PTS
  • area: main
  • in suites: potato
  • size: 2,400 kB
  • ctags: 3,097
  • sloc: ansic: 15,988; sh: 1,845; perl: 1,330; makefile: 59
file content (47 lines) | stat: -rw-r--r-- 1,051 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
#include "global.h"
#include "net_shm.h"


/**********************************/
/*** Fonctions de support dates ***/
/**********************************/

/* calcule t2-t1, en secondes. Juste (mais negatif) meme si t1>t2 */ 
Public
double diffDates(struct timeval t1, struct timeval t2)
{
  double d = (double)t2.tv_sec - (double)t1.tv_sec;

  d += ((double)t2.tv_usec - (double)t1.tv_usec)*1e-6; 
  return d;
}

/* ajoute d secondes a la date. OK meme si d<0 */
Public
void addToDate(struct timeval *t, double d)
{
  double f = floor(d);

  t->tv_sec += (signed long) f;
  t->tv_usec += (u_int32) ((d-f)*1e6);
  while (t->tv_usec >= 1000000) {
    t->tv_usec -= 1000000;
    t->tv_sec++;
  }
}

/* calcule une nouvelle date pour le assume_at de la propriete
 * et met le last_seen a "maintenant" 
 */
Public
void resetDates(Property * p)
{
  struct timeval now;

  gettimeofday(&now, NULL);
  p->last_seen = now;
  p->assume_at = now;
  addToDate(&p->assume_at, MIN_ASSUME_DELAY 
	    + rand()/(RAND_MAX+1.0)*(MAX_ASSUME_DELAY-MIN_ASSUME_DELAY));
}