Rev 3 | Details | Compare with Previous | Last modification | View Log | RSS feed
Rev | Author | Line No. | Line |
---|---|---|---|
3 | magnus | 1 | <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> |
2 | <html><head> |
||
3 | <title>liboop: on_time(), cancel_time()</title> |
||
4 | <link rel="stylesheet" type="text/css" href="style.css"> |
||
5 | </head><body> |
||
6 | |||
7 | <h2>on_time(), cancel_time()</h2> |
||
8 | |||
9 | <pre> |
||
10 | #include <oop.h> |
||
11 | #include <sys/time.h> |
||
12 | |||
13 | /* <em>Zero time, for scheduling an event immediately.</em> */ |
||
14 | static const struct timeval OOP_TIME_NOW = { 0, 0 }; |
||
15 | |||
16 | /* <em>Callback function prototype.</em> */ |
||
17 | typedef void *oop_call_time(oop_source *source,struct timeval tv,void *user); |
||
18 | |||
19 | /* <em>Register and unregister time-triggered event sinks.</em> */ |
||
20 | void (*on_time)(oop_source *source,struct timeval tv,oop_call_time *call,void *user); |
||
21 | void (*cancel_time)(oop_source *source,struct timeval tv,oop_call_time *call,void *user); |
||
22 | </pre> |
||
23 | |||
24 | <h3>Arguments.</h3> |
||
25 | |||
26 | <dl> |
||
27 | <dt><b>oop_source *source</b> |
||
28 | <dd>The event source to register or unregister the event sink with. This must |
||
29 | be the same event source you got the function pointer from: |
||
30 | "src->on_time(src,...);".<p> |
||
31 | |||
32 | <dt><b>struct timeval tv</b> |
||
33 | <dd>The time to wait for. OOP_TIME_NOW (or any time in the past) will cause |
||
34 | immediate scheduling.<p> |
||
35 | |||
36 | <dt><b>oop_call_time *call</b> |
||
37 | <dd>The callback function (event sink) to add (or remove).<p> |
||
38 | |||
39 | <dt><b>void *user</b> |
||
40 | <dd>User data passed through to the callback function.<p> |
||
41 | </dl> |
||
42 | |||
43 | <h3>Description.</h3> |
||
44 | |||
45 | Note that these are not global functions, but function pointers supplied |
||
46 | by the event source (in the <em>oop_source</em> structure) or by the user. |
||
47 | |||
48 | <dl> |
||
49 | <dt><b>on_time</b> |
||
50 | <dd>After this function is called, when the event loop is running and the |
||
51 | time <em>tv</em> is reached (or immediately upon entry to the event loop, if |
||
52 | the specified time occurs in the past), the event source will call the function |
||
53 | <em>call</em>, passing it a pointer to the event source, the scheduled time, |
||
54 | and the same opaque <em>user</em> pointer passed to on_time. This callback |
||
55 | will only be called once. Many callbacks may be registered for the same |
||
56 | time.<p> |
||
57 | |||
58 | <dt><b>cancel_time</b> |
||
59 | <dd>Deactivate an event sink callback registered using on_time (above). If the |
||
60 | passed <em>tv</em>, <em>call</em> and <em>user</em> match a previously |
||
61 | registered callback, it will be removed; if they match more than one, one of |
||
62 | them will be removed; otherwise, no action is taken.<p> |
||
63 | |||
64 | <dt><b>oop_call_time</b> |
||
65 | <dd>Called when the event is triggered. Performs a user_specific action. |
||
66 | Should return OOP_CONTINUE if the event loop should continue operating; any |
||
67 | other value (including OOP_HALT) will cause termination of the event loop. |
||
68 | </dl> |
||
69 | |||
12 | magnus | 70 | <hr><a href="ref.html">liboop reference</a></body></html> |