î e fÉB ã @ s® d Z d d l m Z m Z d d l m Z m Z d d l Z d d l Z d d l Z d Z d Z d d „ Z e d d d d d g ƒ Z Gd d „ d e ƒ Z Gd d „ d d e ƒZ Gd d „ d e ƒ Z Gd d „ d e ƒ Z e e d ƒ rGd d „ d e ƒ Z n e e d ƒ r4Gd d „ d e ƒ Z n e e d ƒ r\Gd d „ d e ƒ Z n d e ƒ k rte Z n6 d e ƒ k rŒe Z n d e ƒ k r¤e Z n e Z d S)!z|Selectors module. This module allows high-level and efficient I/O multiplexing, built upon the `select` module primitives. é )ÚABCMetaÚabstractmethod)Ú namedtupleÚMappingNé c C sŒ t | t ƒ r | } nL y t | j ƒ ƒ } Wn3 t t t f k rc t d j | ƒ ƒ d ‚ Yn X| d k rˆ t d j | ƒ ƒ ‚ n | S)zÕReturn a file descriptor from a file object. Parameters: fileobj -- file object or file descriptor Returns: corresponding file descriptor Raises: ValueError if the object is invalid zInvalid file object: {!r}Nr zInvalid file descriptor: {})Ú isinstanceÚintÚfilenoÚAttributeErrorÚ TypeErrorÚ ValueErrorÚformat)ÚfileobjÚfd© r ú./opt/alt/python34/lib64/python3.4/selectors.pyÚ_fileobj_to_fd s r ÚSelectorKeyr r ÚeventsÚdatac @ sF e Z d Z d Z d d „ Z d d „ Z d d „ Z d d „ Z d S)Ú_SelectorMappingz)Mapping of file objects to selector keys.c C s | | _ d S)N)Ú _selector)ÚselfZselectorr r r Ú__init__5 s z_SelectorMapping.__init__c C s t | j j ƒ S)N)Úlenr Ú _fd_to_key)r r r r Ú__len__8 s z_SelectorMapping.__len__c C sU y$ | j j | ƒ } | j j | SWn* t k rP t d j | ƒ ƒ d ‚ Yn Xd S)Nz{!r} is not registered)r Ú_fileobj_lookupr ÚKeyErrorr )r r r r r r Ú__getitem__; s z_SelectorMapping.__getitem__c C s t | j j ƒ S)N)Úiterr r )r r r r Ú__iter__B s z_SelectorMapping.__iter__N)Ú__name__Ú __module__Ú__qualname__Ú__doc__r r r r! r r r r r 2 s r c @ s£ e Z d Z d Z e d d d „ ƒ Z e d d „ ƒ Z d d d „ Z e d d d „ ƒ Z d d „ Z d d „ Z e d d „ ƒ Z d d „ Z d d „ Z d S)ÚBaseSelectora- Selector abstract base class. A selector supports registering file objects to be monitored for specific I/O events. A file object is a file descriptor or any object with a `fileno()` method. An arbitrary object can be attached to the file object, which can be used for example to store context information, a callback, etc. A selector can use various implementations (select(), poll(), epoll()...) depending on the platform. The default `Selector` class uses the most efficient implementation on the current platform. Nc C s t ‚ d S)a3 Register a file object. Parameters: fileobj -- file object or file descriptor events -- events to monitor (bitwise mask of EVENT_READ|EVENT_WRITE) data -- attached data Returns: SelectorKey instance Raises: ValueError if events is invalid KeyError if fileobj is already registered OSError if fileobj is closed or otherwise is unacceptable to the underlying system call (if a system call is made) Note: OSError may or may not be raised N)ÚNotImplementedError)r r r r r r r ÚregisterU s zBaseSelector.registerc C s t ‚ d S)aj Unregister a file object. Parameters: fileobj -- file object or file descriptor Returns: SelectorKey instance Raises: KeyError if fileobj is not registered Note: If fileobj is registered but has since been closed this does *not* raise OSError (even if the wrapped syscall does) N)r' )r r r r r Ú unregisterl s zBaseSelector.unregisterc C s | j | ƒ | j | | | ƒ S)ay Change a registered file object monitored events or attached data. Parameters: fileobj -- file object or file descriptor events -- events to monitor (bitwise mask of EVENT_READ|EVENT_WRITE) data -- attached data Returns: SelectorKey instance Raises: Anything that unregister() or register() raises )r) r( )r r r r r r r Úmodify s zBaseSelector.modifyc C s t ‚ d S)aq Perform the actual selection, until some monitored file objects are ready or a timeout expires. Parameters: timeout -- if timeout > 0, this specifies the maximum wait time, in seconds if timeout <= 0, the select() call won't block, and will report the currently ready file objects if timeout is None, select() will block until a monitored file object becomes ready Returns: list of (key, events) for ready file objects `events` is a bitwise mask of EVENT_READ|EVENT_WRITE N)r' )r Útimeoutr r r Úselect� s zBaseSelector.selectc C s d S)zmClose the selector. This must be called to make sure that any underlying resource is freed. Nr )r r r r Úclose£ s zBaseSelector.closec C s^ | j ƒ } y! | d k r$ t ‚ n | | SWn* t k rY t d j | ƒ ƒ d ‚ Yn Xd S)zzReturn the key associated to a registered file object. Returns: SelectorKey for this file object Nz{!r} is not registered)Úget_mapr r )r r Úmappingr r r Úget_keyª s zBaseSelector.get_keyc C s t ‚ d S)z2Return a mapping of file objects to selector keys.N)r' )r r r r r. ¸ s zBaseSelector.get_mapc C s | S)Nr )r r r r Ú __enter__½ s zBaseSelector.__enter__c G s | j ƒ d S)N)r- )r Úargsr r r Ú__exit__À s zBaseSelector.__exit__)r" r# r$ r% r r( r) r* r, r- r0 r. r1 r3 r r r r r&