… | |
… | |
595 | hacks). |
595 | hacks). |
596 | |
596 | |
597 | On the negative side, the interface is I<bizarre> - so bizarre that |
597 | On the negative side, the interface is I<bizarre> - so bizarre that |
598 | even sun itself gets it wrong in their code examples: The event polling |
598 | even sun itself gets it wrong in their code examples: The event polling |
599 | function sometimes returning events to the caller even though an error |
599 | function sometimes returning events to the caller even though an error |
600 | occured, but with no indication whether it has done so or not (yes, it's |
600 | occurred, but with no indication whether it has done so or not (yes, it's |
601 | even documented that way) - deadly for edge-triggered interfaces where |
601 | even documented that way) - deadly for edge-triggered interfaces where |
602 | you absolutely have to know whether an event occured or not because you |
602 | you absolutely have to know whether an event occurred or not because you |
603 | have to re-arm the watcher. |
603 | have to re-arm the watcher. |
604 | |
604 | |
605 | Fortunately libev seems to be able to work around these idiocies. |
605 | Fortunately libev seems to be able to work around these idiocies. |
606 | |
606 | |
607 | This backend maps C<EV_READ> and C<EV_WRITE> in the same way as |
607 | This backend maps C<EV_READ> and C<EV_WRITE> in the same way as |