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

Comparing libev/ev.pod (file contents):
Revision 1.334 by root, Mon Oct 25 10:30:23 2010 UTC vs.
Revision 1.335 by root, Mon Oct 25 10:32:05 2010 UTC

1154programs, though, as the fd could already be closed and reused for another 1154programs, though, as the fd could already be closed and reused for another
1155thing, so beware. 1155thing, so beware.
1156 1156
1157=back 1157=back
1158 1158
1159=head2 WATCHER STATES
1160
1161There are various watcher states mentioned throughout this manual -
1162active, pending and so on. In this section these states and the rules to
1163transition between them will be described in more detail - and while these
1164rules might look complicated, they usually do "the right thing".
1165
1166=over 4
1167
1168=item initialiased
1169
1170Before a watcher can be registered with the event looop it has to be
1171initialised. This can be done with a call to C<ev_TYPE_init>, or calls to
1172C<ev_init> followed by the watcher-specific C<ev_TYPE_set> function.
1173
1174In this state it is simply some block of memory that is suitable for use
1175in an event loop. It can be moved around, freed, reused etc. at will.
1176
1177=item started/running/active
1178
1179Once a watcher has been started with a call to C<ev_TYPE_start> it becomes
1180property of the event loop, and is actively waiting for events. While in
1181this state it cannot be accessed (except in a few documented ways), moved,
1182freed or anything else - the only legal thing is to keep a pointer to it,
1183and call libev functions on it that are documented to work on active watchers.
1184
1185=item pending
1186
1187If a watcher is active and libev determines that an event it is interested
1188in has occurred (such as a timer expiring), it will become pending. It will
1189stay in this pending state until either it is stopped or its callback is
1190about to be invoked, so it is not normally pending inside the watcher
1191callback.
1192
1193The watcher might or might not be active while it is pending (for example,
1194an expired non-repeating timer can be pending but no longer active). If it
1195is stopped, it can be freely accessed (e.g. by calling C<ev_TYPE_set>),
1196but it is still property of the event loop at this time, so cannot be
1197moved, freed or reused. And if it is active the rules described in the
1198previous item still apply.
1199
1200It is also possible to feed an event on a watcher that is not active (e.g.
1201via C<ev_feed_event>), in which case it becomes pending without being
1202active.
1203
1204=item stopped
1205
1206A watcher can be stopped implicitly by libev (in which case it might still
1207be pending), or explicitly by calling its C<ev_TYPE_stop> function. The
1208latter will clear any pending state the watcher might be in, regardless
1209of whether it was active or not, so stopping a watcher explicitly before
1210freeing it is often a good idea.
1211
1212While stopped (and not pending) the watcher is essentially in the
1213initialised state, that is it can be reused, moved, modified in any way
1214you wish.
1215
1216=back
1217
1218=head2 GENERIC WATCHER FUNCTIONS 1159=head2 GENERIC WATCHER FUNCTIONS
1219 1160
1220=over 4 1161=over 4
1221 1162
1222=item C<ev_init> (ev_TYPE *watcher, callback) 1163=item C<ev_init> (ev_TYPE *watcher, callback)
1363 1304
1364See also C<ev_feed_fd_event> and C<ev_feed_signal_event> for related 1305See also C<ev_feed_fd_event> and C<ev_feed_signal_event> for related
1365functions that do not need a watcher. 1306functions that do not need a watcher.
1366 1307
1367=back 1308=back
1368
1369 1309
1370=head2 ASSOCIATING CUSTOM DATA WITH A WATCHER 1310=head2 ASSOCIATING CUSTOM DATA WITH A WATCHER
1371 1311
1372Each watcher has, by default, a member C<void *data> that you can change 1312Each watcher has, by default, a member C<void *data> that you can change
1373and read at any time: libev will completely ignore it. This can be used 1313and read at any time: libev will completely ignore it. This can be used
1429 t2_cb (EV_P_ ev_timer *w, int revents) 1369 t2_cb (EV_P_ ev_timer *w, int revents)
1430 { 1370 {
1431 struct my_biggy big = (struct my_biggy *) 1371 struct my_biggy big = (struct my_biggy *)
1432 (((char *)w) - offsetof (struct my_biggy, t2)); 1372 (((char *)w) - offsetof (struct my_biggy, t2));
1433 } 1373 }
1374
1375=head2 WATCHER STATES
1376
1377There are various watcher states mentioned throughout this manual -
1378active, pending and so on. In this section these states and the rules to
1379transition between them will be described in more detail - and while these
1380rules might look complicated, they usually do "the right thing".
1381
1382=over 4
1383
1384=item initialiased
1385
1386Before a watcher can be registered with the event looop it has to be
1387initialised. This can be done with a call to C<ev_TYPE_init>, or calls to
1388C<ev_init> followed by the watcher-specific C<ev_TYPE_set> function.
1389
1390In this state it is simply some block of memory that is suitable for use
1391in an event loop. It can be moved around, freed, reused etc. at will.
1392
1393=item started/running/active
1394
1395Once a watcher has been started with a call to C<ev_TYPE_start> it becomes
1396property of the event loop, and is actively waiting for events. While in
1397this state it cannot be accessed (except in a few documented ways), moved,
1398freed or anything else - the only legal thing is to keep a pointer to it,
1399and call libev functions on it that are documented to work on active watchers.
1400
1401=item pending
1402
1403If a watcher is active and libev determines that an event it is interested
1404in has occurred (such as a timer expiring), it will become pending. It will
1405stay in this pending state until either it is stopped or its callback is
1406about to be invoked, so it is not normally pending inside the watcher
1407callback.
1408
1409The watcher might or might not be active while it is pending (for example,
1410an expired non-repeating timer can be pending but no longer active). If it
1411is stopped, it can be freely accessed (e.g. by calling C<ev_TYPE_set>),
1412but it is still property of the event loop at this time, so cannot be
1413moved, freed or reused. And if it is active the rules described in the
1414previous item still apply.
1415
1416It is also possible to feed an event on a watcher that is not active (e.g.
1417via C<ev_feed_event>), in which case it becomes pending without being
1418active.
1419
1420=item stopped
1421
1422A watcher can be stopped implicitly by libev (in which case it might still
1423be pending), or explicitly by calling its C<ev_TYPE_stop> function. The
1424latter will clear any pending state the watcher might be in, regardless
1425of whether it was active or not, so stopping a watcher explicitly before
1426freeing it is often a good idea.
1427
1428While stopped (and not pending) the watcher is essentially in the
1429initialised state, that is it can be reused, moved, modified in any way
1430you wish.
1431
1432=back
1434 1433
1435=head2 WATCHER PRIORITY MODELS 1434=head2 WATCHER PRIORITY MODELS
1436 1435
1437Many event loops support I<watcher priorities>, which are usually small 1436Many event loops support I<watcher priorities>, which are usually small
1438integers that influence the ordering of event callback invocation 1437integers that influence the ordering of event callback invocation

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines