
Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­
<!DOCTYPE html>
<html>
3

  \îK  ã               @   sŠ  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de_ejd*krŠdej_dej_dej_dej_G dd„ deƒZG dd„ ded�ZG dd„ deƒZG dd„ deƒZeedƒræG dd„ deƒZeedƒ�rG d d!„ d!eƒZeed"ƒ�rG d#d$„ d$eƒZeed%ƒ�r:G d&d'„ d'eƒZd'eƒ k�rLeZn:d!eƒ k�r^eZn(d$eƒ k�rpeZndeƒ k�r‚eZneZdS )+é    )ÚABCMetaÚabstractmethod)Ú
namedtupleÚMappingNé   c             C   sf   t | tƒr| }n<yt| jƒ ƒ}W n* tttfk
rJ   tdj| ƒƒd ‚Y nX |dk rbtdj|ƒƒ‚|S )NzInvalid file object: {!r}r   zInvalid file descriptor: {})Ú
isinstanceÚintÚfilenoÚAttributeErrorÚ	TypeErrorÚ
ValueErrorÚformat)ÚfileobjÚfd© r   ú!/usr/lib64/python3.6/selectors.pyÚ_fileobj_to_fd   s    
r   ÚSelectorKeyr   r   ÚeventsÚdatazŸSelectorKey(fileobj, fd, events, data)

    Object used to associate a file object to its backing
    file descriptor, selected event mask, and attached data.
é   é   zFile object registered.zUnderlying file descriptor.z3Events that must be waited for on this file object.zzOptional opaque data associated to this file object.
    For example, this could be used to store a per-client session ID.c               @   s,   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	S )
Ú_SelectorMappingc             C   s
   || _ d S )N)Ú	_selector)ÚselfZselectorr   r   r   Ú__init__>   s    z_SelectorMapping.__init__c             C   s   t | jjƒS )N)Úlenr   Ú
_fd_to_key)r   r   r   r   Ú__len__A   s    z_SelectorMapping.__len__c             C   sB   y| j j|ƒ}| j j| S  tk
r<   tdj|ƒƒd ‚Y nX d S )Nz{!r} is not registered)r   Ú_fileobj_lookupr   ÚKeyErrorr   )r   r   r   r   r   r   Ú__getitem__D   s
    z_SelectorMapping.__getitem__c             C   s   t | jjƒS )N)Úiterr   r   )r   r   r   r   Ú__iter__K   s    z_SelectorMapping.__iter__N)Ú__name__Ú
__module__Ú__qualname__r   r   r!   r#   r   r   r   r   r   ;   s   r   c               @   sj   e 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 )ÚBaseSelectorNc             C   s   t ‚d S )N)ÚNotImplementedError)r   r   r   r   r   r   r   Úregister^   s    zBaseSelector.registerc             C   s   t ‚d S )N)r(   )r   r   r   r   r   Ú
unregisteru   s    zBaseSelector.unregisterc             C   s   | j |ƒ | j|||ƒS )N)r*   r)   )r   r   r   r   r   r   r   Úmodifyˆ   s    
zBaseSelector.modifyc             C   s   t ‚d S )N)r(   )r   Útimeoutr   r   r   Úselect™   s    zBaseSelector.selectc             C   s   d S )Nr   )r   r   r   r   Úclose¬   s    zBaseSelector.closec             C   sJ   | j ƒ }|d krtdƒ‚y|| S  tk
rD   tdj|ƒƒd ‚Y nX d S )NzSelector is closedz{!r} is not registered)Úget_mapÚRuntimeErrorr    r   )r   r   Úmappingr   r   r   Úget_key³   s    zBaseSelector.get_keyc             C   s   t ‚d S )N)r(   )r   r   r   r   r/   Á   s    zBaseSelector.get_mapc             C   s   | S )Nr   )r   r   r   r   Ú	__enter__Æ   s    zBaseSelector.__enter__c             G   s   | j ƒ  d S )N)r.   )r   Úargsr   r   r   Ú__exit__É   s    zBaseSelector.__exit__)N)N)N)r$   r%   r&   r   r)   r*   r+   r-   r.   r2   r/   r3   r5   r   r   r   r   r'   O   s   
r'   )Ú	metaclassc               @   sP   e Zd Zdd„ Zdd„ Zddd„Zdd	„ Zdd
d„Zdd„ Zdd„ Z	dd„ Z
dS )Ú_BaseSelectorImplc             C   s   i | _ t| ƒ| _d S )N)r   r   Ú_map)r   r   r   r   r   Ð   s    z_BaseSelectorImpl.__init__c             C   sH   yt |ƒS  tk
rB   x"| jjƒ D ]}|j|kr$|jS q$W ‚ Y nX d S )N)r   r   r   Úvaluesr   r   )r   r   Úkeyr   r   r   r   Ö   s    	

z!_BaseSelectorImpl._fileobj_lookupNc             C   sd   | s|t tB  @ r"tdj|ƒƒ‚t|| j|ƒ||ƒ}|j| jkrTtdj||jƒƒ‚|| j|j< |S )NzInvalid events: {!r}z"{!r} (FD {}) is already registered)	Ú
EVENT_READÚEVENT_WRITEr   r   r   r   r   r   r    )r   r   r   r   r:   r   r   r   r)   é   s    z_BaseSelectorImpl.registerc             C   s@   y| j j| j|ƒƒ}W n$ tk
r:   tdj|ƒƒd ‚Y nX |S )Nz{!r} is not registered)r   Úpopr   r    r   )r   r   r:   r   r   r   r*   ö   s
    z_BaseSelectorImpl.unregisterc             C   s„   y| j | j|ƒ }W n$ tk
r8   tdj|ƒƒd ‚Y nX ||jkr^| j|ƒ | j|||ƒ}n"||jkr€|j|d�}|| j |j	< |S )Nz{!r} is not registered)r   )
r   r   r    r   r   r*   r)   r   Ú_replacer   )r   r   r   r   r:   r   r   r   r+   ý   s    


z_BaseSelectorImpl.modifyc             C   s   | j jƒ  d | _d S )N)r   Úclearr8   )r   r   r   r   r.     s    
z_BaseSelectorImpl.closec             C   s   | j S )N)r8   )r   r   r   r   r/     s    z_BaseSelectorImpl.get_mapc             C   s$   y
| j | S  tk
r   d S X d S )N)r   r    )r   r   r   r   r   Ú_key_from_fd  s    	
z_BaseSelectorImpl._key_from_fd)N)N)r$   r%   r&   r   r   r)   r*   r+   r.   r/   r@   r   r   r   r   r7   Í   s   

r7   c                   s\   e Zd Z‡ fdd„Zd‡ fdd„	Z‡ fdd„ZejdkrDdd	d
„Zne	j	Zddd„Z	‡  Z
S )ÚSelectSelectorc                s   t ƒ jƒ  tƒ | _tƒ | _d S )N)Úsuperr   ÚsetÚ_readersÚ_writers)r   )Ú	__class__r   r   r   %  s    
zSelectSelector.__init__Nc                s@   t ƒ j|||ƒ}|t@ r&| jj|jƒ |t@ r<| jj|jƒ |S )N)rB   r)   r;   rD   Úaddr   r<   rE   )r   r   r   r   r:   )rF   r   r   r)   *  s    zSelectSelector.registerc                s,   t ƒ j|ƒ}| jj|jƒ | jj|jƒ |S )N)rB   r*   rD   Údiscardr   rE   )r   r   r:   )rF   r   r   r*   2  s    zSelectSelector.unregisterZwin32c             C   s$   t j ||||ƒ\}}}||| g fS )N)r-   )r   ÚrÚwÚ_r,   Úxr   r   r   Ú_select9  s    zSelectSelector._selectc       	      C   sº   |d krd nt |dƒ}g }y| j| j| jg |ƒ\}}}W n tk
rL   |S X t|ƒ}t|ƒ}xV||B D ]J}d}||kr€|tO }||kr�|tO }| j|ƒ}|rh|j	|||j
@ fƒ qhW |S )Nr   )ÚmaxrM   rD   rE   ÚInterruptedErrorrC   r;   r<   r@   Úappendr   )	r   r,   ÚreadyrI   rJ   rK   r   r   r:   r   r   r   r-   ?  s$    
zSelectSelector.select)N)N)N)r$   r%   r&   r   r)   r*   ÚsysÚplatformrM   r-   Ú__classcell__r   r   )rF   r   rA   "  s   
rA   Úpollc                   s@   e Zd Z‡ fdd„Zd
‡ fdd„	Z‡ fdd„Zddd	„Z‡  ZS )ÚPollSelectorc                s   t ƒ jƒ  tjƒ | _d S )N)rB   r   r-   rU   Ú_poll)r   )rF   r   r   r   Z  s    
zPollSelector.__init__Nc                sL   t ƒ j|||ƒ}d}|t@ r&|tjO }|t@ r8|tjO }| jj|j|ƒ |S )Nr   )	rB   r)   r;   r-   ÚPOLLINr<   ÚPOLLOUTrW   r   )r   r   r   r   r:   Úpoll_events)rF   r   r   r)   ^  s    

zPollSelector.registerc                s   t ƒ j|ƒ}| jj|jƒ |S )N)rB   r*   rW   r   )r   r   r:   )rF   r   r   r*   h  s    zPollSelector.unregisterc             C   s¸   |d krd }n|dkrd}nt j|d ƒ}g }y| jj|ƒ}W n tk
rR   |S X x^|D ]V\}}d}|tj @ rz|tO }|tj @ rŽ|t	O }| j
|ƒ}|rZ|j|||j@ fƒ qZW |S )Nr   g     @�@)ÚmathÚceilrW   rU   rO   r-   rX   r<   rY   r;   r@   rP   r   )r   r,   rQ   Úfd_event_listr   Úeventr   r:   r   r   r   r-   m  s(    
zPollSelector.select)N)N)r$   r%   r&   r   r)   r*   r-   rT   r   r   )rF   r   rV   W  s   
rV   Úepollc                   sT   e Zd Z‡ fdd„Zdd„ Zd‡ fdd„	Z‡ fdd	„Zdd
d„Z‡ fdd„Z‡  Z	S )ÚEpollSelectorc                s   t ƒ jƒ  tjƒ | _d S )N)rB   r   r-   r_   Ú_epoll)r   )rF   r   r   r   �  s    
zEpollSelector.__init__c             C   s
   | j jƒ S )N)ra   r	   )r   r   r   r   r	   ‘  s    zEpollSelector.filenoNc                st   t ƒ j|||ƒ}d}|t@ r&|tjO }|t@ r8|tjO }y| jj|j|ƒ W n" t	k
rn   t ƒ j
|ƒ ‚ Y nX |S )Nr   )rB   r)   r;   r-   ÚEPOLLINr<   ÚEPOLLOUTra   r   ÚBaseExceptionr*   )r   r   r   r   r:   Zepoll_events)rF   r   r   r)   ”  s    

zEpollSelector.registerc                s8   t ƒ j|ƒ}y| jj|jƒ W n tk
r2   Y nX |S )N)rB   r*   ra   r   ÚOSError)r   r   r:   )rF   r   r   r*   ¢  s    zEpollSelector.unregisterc       	      C   sÎ   |d krd}n |dkrd}nt j|d ƒd }tt| jƒdƒ}g }y| jj||ƒ}W n tk
rh   |S X x^|D ]V\}}d}|tj	 @ r�|t
O }|tj @ r¤|tO }| j|ƒ}|rp|j|||j@ fƒ qpW |S )Nr   r   g     @�@gü©ñÒMbP?éÿÿÿÿ)r[   r\   rN   r   r   ra   rU   rO   r-   rb   r<   rc   r;   r@   rP   r   )	r   r,   Úmax_evrQ   r]   r   r^   r   r:   r   r   r   r-   ¬  s*    
zEpollSelector.selectc                s   | j jƒ  tƒ jƒ  d S )N)ra   r.   rB   )r   )rF   r   r   r.   Ì  s    
zEpollSelector.close)N)N)
r$   r%   r&   r   r	   r)   r*   r-   r.   rT   r   r   )rF   r   r`   Š  s   

 r`   Údevpollc                   sT   e Zd Z‡ fdd„Zdd„ Zd‡ fdd„	Z‡ fdd	„Zdd
d„Z‡ fdd„Z‡  Z	S )ÚDevpollSelectorc                s   t ƒ jƒ  tjƒ | _d S )N)rB   r   r-   rh   Ú_devpoll)r   )rF   r   r   r   Ö  s    
zDevpollSelector.__init__c             C   s
   | j jƒ S )N)rj   r	   )r   r   r   r   r	   Ú  s    zDevpollSelector.filenoNc                sL   t ƒ j|||ƒ}d}|t@ r&|tjO }|t@ r8|tjO }| jj|j|ƒ |S )Nr   )	rB   r)   r;   r-   rX   r<   rY   rj   r   )r   r   r   r   r:   rZ   )rF   r   r   r)   Ý  s    

zDevpollSelector.registerc                s   t ƒ j|ƒ}| jj|jƒ |S )N)rB   r*   rj   r   )r   r   r:   )rF   r   r   r*   ç  s    zDevpollSelector.unregisterc             C   s¸   |d krd }n|dkrd}nt j|d ƒ}g }y| jj|ƒ}W n tk
rR   |S X x^|D ]V\}}d}|tj @ rz|tO }|tj @ rŽ|t	O }| j
|ƒ}|rZ|j|||j@ fƒ qZW |S )Nr   g     @�@)r[   r\   rj   rU   rO   r-   rX   r<   rY   r;   r@   rP   r   )r   r,   rQ   r]   r   r^   r   r:   r   r   r   r-   ì  s(    
zDevpollSelector.selectc                s   | j jƒ  tƒ jƒ  d S )N)rj   r.   rB   )r   )rF   r   r   r.     s    
zDevpollSelector.close)N)N)
r$   r%   r&   r   r	   r)   r*   r-   r.   rT   r   r   )rF   r   ri   Ó  s   

ri   Úkqueuec                   sT   e Zd Z‡ fdd„Zdd„ Zd‡ fdd„	Z‡ fdd	„Zdd
d„Z‡ fdd„Z‡  Z	S )ÚKqueueSelectorc                s   t ƒ jƒ  tjƒ | _d S )N)rB   r   r-   rk   Ú_kqueue)r   )rF   r   r   r     s    
zKqueueSelector.__init__c             C   s
   | j jƒ S )N)rm   r	   )r   r   r   r   r	     s    zKqueueSelector.filenoNc                s˜   t ƒ j|||ƒ}y`|t@ r@tj|jtjtjƒ}| jj	|gddƒ |t
@ rntj|jtjtjƒ}| jj	|gddƒ W n" tk
r’   t ƒ j|ƒ ‚ Y nX |S )Nr   )rB   r)   r;   r-   Úkeventr   ÚKQ_FILTER_READZ	KQ_EV_ADDrm   Úcontrolr<   ÚKQ_FILTER_WRITErd   r*   )r   r   r   r   r:   Úkev)rF   r   r   r)     s    zKqueueSelector.registerc                s¤   t ƒ j|ƒ}|jt@ rVtj|jtjtjƒ}y| j	j
|gddƒ W n tk
rT   Y nX |jt@ r tj|jtjtjƒ}y| j	j
|gddƒ W n tk
rž   Y nX |S )Nr   )rB   r*   r   r;   r-   rn   r   ro   ZKQ_EV_DELETErm   rp   re   r<   rq   )r   r   r:   rr   )rF   r   r   r*   '  s     

zKqueueSelector.unregisterc       
      C   s¶   |d krd nt |dƒ}t| jƒ}g }y| jjd ||ƒ}W n tk
rL   |S X xb|D ]Z}|j}|j}d}|tj	krz|t
O }|tjkrŒ|tO }| j|ƒ}	|	rT|j|	||	j@ fƒ qTW |S )Nr   )rN   r   r   rm   rp   rO   ZidentÚfilterr-   ro   r;   rq   r<   r@   rP   r   )
r   r,   rg   rQ   Zkev_listrr   r   Úflagr   r:   r   r   r   r-   <  s&    




zKqueueSelector.selectc                s   | j jƒ  tƒ jƒ  d S )N)rm   r.   rB   )r   )rF   r   r   r.   R  s    
zKqueueSelector.close)N)N)
r$   r%   r&   r   r	   r)   r*   r-   r.   rT   r   r   )rF   r   rl     s   
rl   r   é   )r   r   )Úabcr   r   Úcollectionsr   r   r[   r-   rR   r;   r<   r   r   Ú__doc__Úversion_infor   r   r   r   r   r'   r7   rA   ÚhasattrrV   r`   ri   rl   ÚglobalsZDefaultSelectorr   r   r   r   Ú<module>   sF   
~U3
1G8M