aboutsummaryrefslogtreecommitdiffstats
path: root/docs/afb-timer.md
blob: d02ab69aded57de341b99cd7be77b8673023f6df (plain)
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
# AFB Timer functions reference

## TimerHandleT

Members are:

* `count`: integer representing the number of times the timers should run.
* `delay`: millisecond integer representing the delay to wait before and between
 the callback run.
* `uid`: a string identifying the timer.
* `context`: an opaq pointer that could be used in the callback function.
* `evtSource`: a systemd event source struct. Should be NULL.
* `api`: the AFB api pointer.
* `callback`: a function pointer for the callback to call at timer expiration
* `freeCB`: a function pointer called after expiration of the timer. Mainly meant
 to release the context pointer by example.

## void TimerEvtStart(afb_api_t api, TimerHandleT *timerHandle, timerCallbackT callback, void *context)

Start a timer which invokes the callback when the delay expires for `count`
times.

* `api`: AFB api pointer.
* `timerHandle`: pointer to struct representing a timer.
* `callback`: a function pointer for the callback to call at timer expiration
* `context`: an opaq pointer that could be used in the callback function.

## void TimerEvtStop(TimerHandleT *timerHandle)

Manually stop the timer's run. If the `count` isn't finished then it will end
the timer and no other runs will occur.

* `timerHandle`: pointer to struct representing a timer.

## uint64_t LockWait(afb_api_t api, uint64_t utimeout)

It is function acting like a non-blocking sleep for an API. It lets the main API
event loop runs while you are waiting and will unlock at the first received
event and returns the remaining time to wait if an event occurs or 0 if no events
occured and timeout hits. Then you have to manually ensure that once an event
has been received that it was the one you are waiting for and if not launch again
the wait with the remaining time returned.

* `api`: AFB api pointer.
* `timeout`: timeout in microsecond.

Returns the remaining time in microsecond to wait if an event occurs or 0 if no
events occured and timeout hits