xref: /netbsd-src/external/mit/libuv/dist/docs/code/uvstop/main.c (revision 0e552da7216834a96e91ad098e59272b41087480)
1*0e552da7Schristos #include <stdio.h>
2*0e552da7Schristos #include <uv.h>
3*0e552da7Schristos 
4*0e552da7Schristos int64_t counter = 0;
5*0e552da7Schristos 
idle_cb(uv_idle_t * handle)6*0e552da7Schristos void idle_cb(uv_idle_t *handle) {
7*0e552da7Schristos     printf("Idle callback\n");
8*0e552da7Schristos     counter++;
9*0e552da7Schristos 
10*0e552da7Schristos     if (counter >= 5) {
11*0e552da7Schristos         uv_stop(uv_default_loop());
12*0e552da7Schristos         printf("uv_stop() called\n");
13*0e552da7Schristos     }
14*0e552da7Schristos }
15*0e552da7Schristos 
prep_cb(uv_prepare_t * handle)16*0e552da7Schristos void prep_cb(uv_prepare_t *handle) {
17*0e552da7Schristos     printf("Prep callback\n");
18*0e552da7Schristos }
19*0e552da7Schristos 
main()20*0e552da7Schristos int main() {
21*0e552da7Schristos     uv_idle_t idler;
22*0e552da7Schristos     uv_prepare_t prep;
23*0e552da7Schristos 
24*0e552da7Schristos     uv_idle_init(uv_default_loop(), &idler);
25*0e552da7Schristos     uv_idle_start(&idler, idle_cb);
26*0e552da7Schristos 
27*0e552da7Schristos     uv_prepare_init(uv_default_loop(), &prep);
28*0e552da7Schristos     uv_prepare_start(&prep, prep_cb);
29*0e552da7Schristos 
30*0e552da7Schristos     uv_run(uv_default_loop(), UV_RUN_DEFAULT);
31*0e552da7Schristos 
32*0e552da7Schristos     return 0;
33*0e552da7Schristos }
34