Jump to revision: | |
---|---|
Author: | pje |
Date: | Thu Sep 23 21:07:44 2004 UTC (19 years, 6 months ago) |
Log Message:
Fixed several 'peak.events' bugs, as reported by Vladimir Iliev, Yaroslav Samchuk, and Alexander Smishlajev: * 'events.AnyOf' could hold multiple references to a single event source, and nesting 'AnyOf()' calls could leak references to the nested events. * 'events.subscribe()' had a potential race condition wherein a callback could be invoked after its weak reference was garbage collected, leading to bizarre error messages about 'self' being 'None'. * 'select()' could be called on select event objects even if there were no current subscribers to the event, potentially leading to calling 'select()' on a closed socket. * Non-default signal handlers were remaining installed even when there were no current subscribers to the applicable event, as long as a reference to the event object existed. As a result of these changes, certain I/O event types (esp. signals and stream readable/writeable events) are now longer-lived. For example, signal event objects are now immortal, and the read/write event for a particular 'fileno()' will be reused for as long as its supplying 'Selector' or 'EventLoop' instance exists. (Previously, weak references were used so that these objects would be recycled when not in use.)
Changed paths:
Path | Action | Text Changes | Prop Changes | Diff to Previous |
---|---|---|---|---|
PEAK/CHANGES.txt | modified | X | (diff to previous) | |
PEAK/src/peak/events/io_events.py | modified | X | (diff to previous) | |
PEAK/src/peak/events/sources.py | modified | X | (diff to previous) | |
PEAK/src/peak/events/tests/test_events.py | modified | X | (diff to previous) | |
PEAK/src/peak/events/twisted_support.py | modified | X | (diff to previous) |
cvs-admin@eby-sarna.com Powered by ViewCVS 1.0-dev |
ViewCVS and CVS Help |