File: active.c

package info (click to toggle)
libuev 2.4.1-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 1,944 kB
  • sloc: sh: 4,665; ansic: 1,428; makefile: 102
file content (64 lines) | stat: -rw-r--r-- 1,432 bytes parent folder | download | duplicates (3)
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
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
#include "check.h"
#include <time.h>
#include <sys/time.h>

#define TIMEOUT1 2		/* 2 sec */
#define TIMEOUT2 4		/* 4 sec */
#define DAYLY    (24 * 60 * 60)	/* Seconds in one day */

uev_t timer1;
uev_t timer2;
uev_t timer3;
uev_t cron1;
uev_t cron2;

static void cb(uev_t *w, void *arg, int events)
{
	if (UEV_ERROR == events)
		fprintf(stderr, "timer watcher failed, ignoring ...\n");

	fail_unless(w == &timer1);

	fail_unless(uev_timer_active(&timer2));
	fail_unless(!uev_timer_active(&timer3));
	fail_unless(uev_cron_active(&cron1));
	fail_unless(uev_cron_active(&cron2));

	uev_timer_stop(&timer2);
	uev_timer_stop(&cron2);

	fail_unless(!uev_timer_active(&timer2));
	fail_unless(!uev_cron_active(&cron2));

	/* Restart timer and see if we fail in uev_exit() */
	uev_timer_start(&timer2);

	uev_exit(w->ctx);
}

int main(void)
{
	struct timeval tomorrow;
	uev_ctx_t ctx;

	gettimeofday(&tomorrow, NULL);
	tomorrow.tv_sec += 24 * 60 * 60;

	uev_init(&ctx);
	uev_timer_init(&ctx, &timer1, cb, NULL, TIMEOUT1 * 1000, 0);
	uev_timer_init(&ctx, &timer2, cb, NULL, TIMEOUT2 * 1000, 0);
	uev_timer_init(&ctx, &timer3, cb, NULL, TIMEOUT2 * 1000, 0);
	uev_timer_stop(&timer3);

	uev_cron_init(&ctx, &cron1, cb, NULL, tomorrow.tv_sec, 24 * 60 * 60);
	uev_cron_init(&ctx, &cron2, cb, NULL, tomorrow.tv_sec, 24 * 60 * 60);

	return uev_run(&ctx, 0);
}

/**
 * Local Variables:
 *  indent-tabs-mode: t
 *  c-file-style: "linux"
 * End:
 */