Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Rename BEGIN_DECL since we changed the usual definition to a macro with arguments...
[simgrid.git] / include / gras / timer.h
1 /* $Id$ */
2
3 /* timer - delayed and repetitive tasks                                     */
4 /* module's public interface exported to end user.                          */
5
6 /* Copyright (c) 2005 Martin Quinson. All rights reserved.                  */
7
8 /* This program is free software; you can redistribute it and/or modify it
9  * under the terms of the license (GNU LGPL) which comes with this package. */
10
11 #ifndef GRAS_TIMER_H
12 #define GRAS_TIMER_H
13
14 #include "xbt/misc.h"
15
16 SG_BEGIN_DECL()
17
18 /** @addtogroup GRAS_timer
19  *  @brief Delayed and repetitive tasks (Communication facility)
20  *
21  *  This is how to have a specific function called only once after the
22  *  specified amount of time or a function executed every 5 mn until it gets 
23  *  removed. In the UNIX world, this is comparable to <tt>at</tt> and 
24  *  <tt>cron</tt>.
25  *
26  *  Note that this is very soft timers: the execution of the processes won't
27  *  get interrupted at all. This is on purpose: the GRAS programming model
28  *  is distributed sequential, so that users don't have to deal with mutexes
29  *  and such within a specific process.
30  *
31  *  Timers are served by the gras_handle() function: if there is an elapsed 
32  *  timer, the associated code gets executed before any incomming connexion 
33  *  are checked. 
34  *
35  *  The section \ref GRAS_ex_timer constitutes a perfect example of these features.
36  * 
37  *  @{
38  */
39
40   typedef void (*void_f_void_t)(void);
41
42   void gras_timer_delay(double delay, void_f_void_t action);
43   void gras_timer_repeat(double interval, void_f_void_t action);
44
45   void gras_timer_cancel_delay(double interval, void_f_void_t action);
46   void gras_timer_cancel_repeat(double interval, void_f_void_t action);
47
48   void gras_timer_cancel_delay_all(void);
49   void gras_timer_cancel_repeat_all(void);
50
51   void gras_timer_cancel_all(void);
52
53 /** @} */
54
55 SG_END_DECL()
56
57 #endif /* GRAS_TIMER_H */