ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/libev/ev.pod
(Generate patch)

Comparing libev/ev.pod (file contents):
Revision 1.241 by root, Sat Apr 25 14:23:26 2009 UTC vs.
Revision 1.243 by root, Sat Jun 20 20:22:35 2009 UTC

1184 #include <stddef.h> 1184 #include <stddef.h>
1185 1185
1186 static void 1186 static void
1187 t1_cb (EV_P_ ev_timer *w, int revents) 1187 t1_cb (EV_P_ ev_timer *w, int revents)
1188 { 1188 {
1189 struct my_biggy big = (struct my_biggy * 1189 struct my_biggy big = (struct my_biggy *)
1190 (((char *)w) - offsetof (struct my_biggy, t1)); 1190 (((char *)w) - offsetof (struct my_biggy, t1));
1191 } 1191 }
1192 1192
1193 static void 1193 static void
1194 t2_cb (EV_P_ ev_timer *w, int revents) 1194 t2_cb (EV_P_ ev_timer *w, int revents)
1195 { 1195 {
1196 struct my_biggy big = (struct my_biggy * 1196 struct my_biggy big = (struct my_biggy *)
1197 (((char *)w) - offsetof (struct my_biggy, t2)); 1197 (((char *)w) - offsetof (struct my_biggy, t2));
1198 } 1198 }
1199 1199
1200=head2 WATCHER PRIORITY MODELS 1200=head2 WATCHER PRIORITY MODELS
1201 1201
1277 // with the default priority are receiving events. 1277 // with the default priority are receiving events.
1278 ev_idle_start (EV_A_ &idle); 1278 ev_idle_start (EV_A_ &idle);
1279 } 1279 }
1280 1280
1281 static void 1281 static void
1282 idle-cb (EV_P_ ev_idle *w, int revents) 1282 idle_cb (EV_P_ ev_idle *w, int revents)
1283 { 1283 {
1284 // actual processing 1284 // actual processing
1285 read (STDIN_FILENO, ...); 1285 read (STDIN_FILENO, ...);
1286 1286
1287 // have to start the I/O watcher again, as 1287 // have to start the I/O watcher again, as
1523C<after> argument to C<ev_timer_set>, and only ever use the C<repeat> 1523C<after> argument to C<ev_timer_set>, and only ever use the C<repeat>
1524member and C<ev_timer_again>. 1524member and C<ev_timer_again>.
1525 1525
1526At start: 1526At start:
1527 1527
1528 ev_timer_init (timer, callback); 1528 ev_init (timer, callback);
1529 timer->repeat = 60.; 1529 timer->repeat = 60.;
1530 ev_timer_again (loop, timer); 1530 ev_timer_again (loop, timer);
1531 1531
1532Each time there is some activity: 1532Each time there is some activity:
1533 1533
1595 1595
1596To start the timer, simply initialise the watcher and set C<last_activity> 1596To start the timer, simply initialise the watcher and set C<last_activity>
1597to the current time (meaning we just have some activity :), then call the 1597to the current time (meaning we just have some activity :), then call the
1598callback, which will "do the right thing" and start the timer: 1598callback, which will "do the right thing" and start the timer:
1599 1599
1600 ev_timer_init (timer, callback); 1600 ev_init (timer, callback);
1601 last_activity = ev_now (loop); 1601 last_activity = ev_now (loop);
1602 callback (loop, timer, EV_TIMEOUT); 1602 callback (loop, timer, EV_TIMEOUT);
1603 1603
1604And when there is some activity, simply store the current time in 1604And when there is some activity, simply store the current time in
1605C<last_activity>, no libev calls at all: 1605C<last_activity>, no libev calls at all:
2368 // no longer anything immediate to do. 2368 // no longer anything immediate to do.
2369 } 2369 }
2370 2370
2371 ev_idle *idle_watcher = malloc (sizeof (ev_idle)); 2371 ev_idle *idle_watcher = malloc (sizeof (ev_idle));
2372 ev_idle_init (idle_watcher, idle_cb); 2372 ev_idle_init (idle_watcher, idle_cb);
2373 ev_idle_start (loop, idle_cb); 2373 ev_idle_start (loop, idle_watcher);
2374 2374
2375 2375
2376=head2 C<ev_prepare> and C<ev_check> - customise your event loop! 2376=head2 C<ev_prepare> and C<ev_check> - customise your event loop!
2377 2377
2378Prepare and check watchers are usually (but not always) used in pairs: 2378Prepare and check watchers are usually (but not always) used in pairs:
2471 struct pollfd fds [nfd]; 2471 struct pollfd fds [nfd];
2472 // actual code will need to loop here and realloc etc. 2472 // actual code will need to loop here and realloc etc.
2473 adns_beforepoll (ads, fds, &nfd, &timeout, timeval_from (ev_time ())); 2473 adns_beforepoll (ads, fds, &nfd, &timeout, timeval_from (ev_time ()));
2474 2474
2475 /* the callback is illegal, but won't be called as we stop during check */ 2475 /* the callback is illegal, but won't be called as we stop during check */
2476 ev_timer_init (&tw, 0, timeout * 1e-3); 2476 ev_timer_init (&tw, 0, timeout * 1e-3, 0.);
2477 ev_timer_start (loop, &tw); 2477 ev_timer_start (loop, &tw);
2478 2478
2479 // create one ev_io per pollfd 2479 // create one ev_io per pollfd
2480 for (int i = 0; i < nfd; ++i) 2480 for (int i = 0; i < nfd; ++i)
2481 { 2481 {

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines