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

Comparing libev/ev.pod (file contents):
Revision 1.199 by root, Thu Oct 23 07:18:21 2008 UTC vs.
Revision 1.200 by root, Thu Oct 23 07:33:45 2008 UTC

10 10
11 // a single header file is required 11 // a single header file is required
12 #include <ev.h> 12 #include <ev.h>
13 13
14 // every watcher type has its own typedef'd struct 14 // every watcher type has its own typedef'd struct
15 // with the name ev_<type> 15 // with the name ev_TYPE
16 ev_io stdin_watcher; 16 ev_io stdin_watcher;
17 ev_timer timeout_watcher; 17 ev_timer timeout_watcher;
18 18
19 // all watcher callbacks have a similar signature 19 // all watcher callbacks have a similar signature
20 // this callback is called when data is readable on stdin 20 // this callback is called when data is readable on stdin
276 276
277=back 277=back
278 278
279=head1 FUNCTIONS CONTROLLING THE EVENT LOOP 279=head1 FUNCTIONS CONTROLLING THE EVENT LOOP
280 280
281An event loop is described by a C<ev_loop *>. The library knows two 281An event loop is described by a C<struct ev_loop *> (the C<struct>
282types of such loops, the I<default> loop, which supports signals and child 282is I<not> optional in this case, as there is also an C<ev_loop>
283events, and dynamically created loops which do not. 283I<function>).
284
285The library knows two types of such loops, the I<default> loop, which
286supports signals and child events, and dynamically created loops which do
287not.
284 288
285=over 4 289=over 4
286 290
287=item struct ev_loop *ev_default_loop (unsigned int flags) 291=item struct ev_loop *ev_default_loop (unsigned int flags)
288 292
768they fire on, say, one-second boundaries only. 772they fire on, say, one-second boundaries only.
769 773
770=item ev_loop_verify (loop) 774=item ev_loop_verify (loop)
771 775
772This function only does something when C<EV_VERIFY> support has been 776This function only does something when C<EV_VERIFY> support has been
773compiled in. which is the default for non-minimal builds. It tries to go 777compiled in, which is the default for non-minimal builds. It tries to go
774through all internal structures and checks them for validity. If anything 778through all internal structures and checks them for validity. If anything
775is found to be inconsistent, it will print an error message to standard 779is found to be inconsistent, it will print an error message to standard
776error and call C<abort ()>. 780error and call C<abort ()>.
777 781
778This can be used to catch bugs inside libev itself: under normal 782This can be used to catch bugs inside libev itself: under normal
781 785
782=back 786=back
783 787
784 788
785=head1 ANATOMY OF A WATCHER 789=head1 ANATOMY OF A WATCHER
790
791In the following description, uppercase C<TYPE> in names stands for the
792watcher type, e.g. C<ev_TYPE_start> can mean C<ev_timer_start> for timer
793watchers and C<ev_io_start> for I/O watchers.
786 794
787A watcher is a structure that you create and register to record your 795A watcher is a structure that you create and register to record your
788interest in some event. For instance, if you want to wait for STDIN to 796interest in some event. For instance, if you want to wait for STDIN to
789become readable, you would create an C<ev_io> watcher for that: 797become readable, you would create an C<ev_io> watcher for that:
790 798
793 ev_io_stop (w); 801 ev_io_stop (w);
794 ev_unloop (loop, EVUNLOOP_ALL); 802 ev_unloop (loop, EVUNLOOP_ALL);
795 } 803 }
796 804
797 struct ev_loop *loop = ev_default_loop (0); 805 struct ev_loop *loop = ev_default_loop (0);
806
798 ev_io stdin_watcher; 807 ev_io stdin_watcher;
808
799 ev_init (&stdin_watcher, my_cb); 809 ev_init (&stdin_watcher, my_cb);
800 ev_io_set (&stdin_watcher, STDIN_FILENO, EV_READ); 810 ev_io_set (&stdin_watcher, STDIN_FILENO, EV_READ);
801 ev_io_start (loop, &stdin_watcher); 811 ev_io_start (loop, &stdin_watcher);
812
802 ev_loop (loop, 0); 813 ev_loop (loop, 0);
803 814
804As you can see, you are responsible for allocating the memory for your 815As you can see, you are responsible for allocating the memory for your
805watcher structures (and it is usually a bad idea to do this on the stack, 816watcher structures (and it is I<usually> a bad idea to do this on the
806although this can sometimes be quite valid). 817stack).
818
819Each watcher has an associated watcher structure (called C<struct ev_TYPE>
820or simply C<ev_TYPE>, as typedefs are provided for all watcher structs).
807 821
808Each watcher structure must be initialised by a call to C<ev_init 822Each watcher structure must be initialised by a call to C<ev_init
809(watcher *, callback)>, which expects a callback to be provided. This 823(watcher *, callback)>, which expects a callback to be provided. This
810callback gets invoked each time the event occurs (or, in the case of I/O 824callback gets invoked each time the event occurs (or, in the case of I/O
811watchers, each time the event loop detects that the file descriptor given 825watchers, each time the event loop detects that the file descriptor given
812is readable and/or writable). 826is readable and/or writable).
813 827
814Each watcher type has its own C<< ev_<type>_set (watcher *, ...) >> macro 828Each watcher type further has its own C<< ev_TYPE_set (watcher *, ...) >>
815with arguments specific to this watcher type. There is also a macro 829macro to configure it, with arguments specific to the watcher type. There
816to combine initialisation and setting in one call: C<< ev_<type>_init 830is also a macro to combine initialisation and setting in one call: C<<
817(watcher *, callback, ...) >>. 831ev_TYPE_init (watcher *, callback, ...) >>.
818 832
819To make the watcher actually watch out for events, you have to start it 833To make the watcher actually watch out for events, you have to start it
820with a watcher-specific start function (C<< ev_<type>_start (loop, watcher 834with a watcher-specific start function (C<< ev_TYPE_start (loop, watcher
821*) >>), and you can stop watching for events at any time by calling the 835*) >>), and you can stop watching for events at any time by calling the
822corresponding stop function (C<< ev_<type>_stop (loop, watcher *) >>. 836corresponding stop function (C<< ev_TYPE_stop (loop, watcher *) >>.
823 837
824As long as your watcher is active (has been started but not stopped) you 838As long as your watcher is active (has been started but not stopped) you
825must not touch the values stored in it. Most specifically you must never 839must not touch the values stored in it. Most specifically you must never
826reinitialise it or call its C<set> macro. 840reinitialise it or call its C<ev_TYPE_set> macro.
827 841
828Each and every callback receives the event loop pointer as first, the 842Each and every callback receives the event loop pointer as first, the
829registered watcher structure as second, and a bitset of received events as 843registered watcher structure as second, and a bitset of received events as
830third argument. 844third argument.
831 845
911thing, so beware. 925thing, so beware.
912 926
913=back 927=back
914 928
915=head2 GENERIC WATCHER FUNCTIONS 929=head2 GENERIC WATCHER FUNCTIONS
916
917In the following description, C<TYPE> stands for the watcher type,
918e.g. C<timer> for C<ev_timer> watchers and C<io> for C<ev_io> watchers.
919 930
920=over 4 931=over 4
921 932
922=item C<ev_init> (ev_TYPE *watcher, callback) 933=item C<ev_init> (ev_TYPE *watcher, callback)
923 934
1426 1437
1427Changing the timeout is trivial as well (if it isn't hard-coded in the 1438Changing the timeout is trivial as well (if it isn't hard-coded in the
1428callback :) - just change the timeout and invoke the callback, which will 1439callback :) - just change the timeout and invoke the callback, which will
1429fix things for you. 1440fix things for you.
1430 1441
1431=item 4. Whee, use a double-linked list for your timeouts. 1442=item 4. Wee, just use a double-linked list for your timeouts.
1432 1443
1433If there is not one request, but many thousands, all employing some kind 1444If there is not one request, but many thousands (millions...), all
1434of timeout with the same timeout value, then one can do even better: 1445employing some kind of timeout with the same timeout value, then one can
1446do even better:
1435 1447
1436When starting the timeout, calculate the timeout value and put the timeout 1448When starting the timeout, calculate the timeout value and put the timeout
1437at the I<end> of the list. 1449at the I<end> of the list.
1438 1450
1439Then use an C<ev_timer> to fire when the timeout at the I<beginning> of 1451Then use an C<ev_timer> to fire when the timeout at the I<beginning> of
1448complication, and having to use a constant timeout. The constant timeout 1460complication, and having to use a constant timeout. The constant timeout
1449ensures that the list stays sorted. 1461ensures that the list stays sorted.
1450 1462
1451=back 1463=back
1452 1464
1453So what method is the best? 1465So which method the best?
1454 1466
1455The method #2 is a simple no-brain-required solution that is adequate in 1467Method #2 is a simple no-brain-required solution that is adequate in most
1456most situations. Method #3 requires a bit more thinking, but handles many 1468situations. Method #3 requires a bit more thinking, but handles many cases
1457cases better, and isn't very complicated either. In most case, choosing 1469better, and isn't very complicated either. In most case, choosing either
1458either one is fine. 1470one is fine, with #3 being better in typical situations.
1459 1471
1460Method #1 is almost always a bad idea, and buys you nothing. Method #4 is 1472Method #1 is almost always a bad idea, and buys you nothing. Method #4 is
1461rather complicated, but extremely efficient, something that really pays 1473rather complicated, but extremely efficient, something that really pays
1462off after the first or so million of active timers, i.e. it's usually 1474off after the first million or so of active timers, i.e. it's usually
1463overkill :) 1475overkill :)
1464 1476
1465=head3 The special problem of time updates 1477=head3 The special problem of time updates
1466 1478
1467Establishing the current time is a costly operation (it usually takes at 1479Establishing the current time is a costly operation (it usually takes at

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines