
Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­
<!DOCTYPE html>
<html>
U
    ¡ê,a�H  ã                   @   s¢  d dl mZmZ d dlmZ d dl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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%ƒ�r6G d&d'„ d'eƒZeed(ƒ�rRG d)d*„ d*eƒZd*eƒ k�rdeZn:d$eƒ k�rveZn(d'eƒ k�rˆeZnd!eƒ k�ršeZneZdS )+é    )ÚABCMetaÚabstractmethod)Ú
namedtuple)ÚMappingNé   é   c              
   C   sf   t | tƒr| }n<zt|  ¡ ƒ}W n* tttfk
rJ   td | ¡ƒd ‚Y nX |dk rbtd |¡ƒ‚|S )NzInvalid file object: {!r}r   zInvalid file descriptor: {})Ú
isinstanceÚintÚfilenoÚAttributeErrorÚ	TypeErrorÚ
ValueErrorÚformat)ÚfileobjÚfd© r   ú./opt/alt/python38/lib64/python3.8/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 r   )Úlenr   Ú
_fd_to_key©r   r   r   r   Ú__len__B   s    z_SelectorMapping.__len__c                 C   sD   z| j  |¡}| j j| W S  tk
r>   td |¡ƒd ‚Y nX d S ©Nú{!r} is not registered)r   Ú_fileobj_lookupr   ÚKeyErrorr   )r   r   r   r   r   r   Ú__getitem__E   s
    z_SelectorMapping.__getitem__c                 C   s   t | jjƒS r   )Úiterr   r   r    r   r   r   Ú__iter__L   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 r   ©ÚNotImplementedError©r   r   r   r   r   r   r   Úregister_   s    zBaseSelector.registerc                 C   s   t ‚d S r   r-   )r   r   r   r   r   Ú
unregisterv   s    zBaseSelector.unregisterc                 C   s   |   |¡ |  |||¡S r   )r1   r0   r/   r   r   r   Úmodify‰   s    
zBaseSelector.modifyc                 C   s   t ‚d S r   r-   )r   Útimeoutr   r   r   Úselectš   s    zBaseSelector.selectc                 C   s   d S r   r   r    r   r   r   Úclose­   s    zBaseSelector.closec                 C   sL   |   ¡ }|d krtdƒ‚z
|| W S  tk
rF   td |¡ƒd ‚Y nX d S )NzSelector is closedr#   )Úget_mapÚRuntimeErrorr%   r   )r   r   Úmappingr   r   r   Úget_key´   s    
zBaseSelector.get_keyc                 C   s   t ‚d S r   r-   r    r   r   r   r6   Â   s    zBaseSelector.get_mapc                 C   s   | S r   r   r    r   r   r   Ú	__enter__Ç   s    zBaseSelector.__enter__c                 G   s   |   ¡  d S r   )r5   )r   Úargsr   r   r   Ú__exit__Ê   s    zBaseSelector.__exit__)N)N)N)r)   r*   r+   r   r0   r1   r2   r4   r5   r9   r6   r:   r<   r   r   r   r   r,   P   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 r   )r   r   Ú_mapr    r   r   r   r   Ñ   s    z_BaseSelectorImpl.__init__c                 C   sN   z
t |ƒW S  tk
rH   | j ¡ D ]}|j|kr$|j   Y S q$‚ Y nX d S r   )r   r   r   Úvaluesr   r   ©r   r   Úkeyr   r   r   r$   ×   s    	

z!_BaseSelectorImpl._fileobj_lookupNc                 C   sb   |r|t tB  @ r td |¡ƒ‚t||  |¡||ƒ}|j| jkrRtd ||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   rB   r   r   r   r0   ê   s     ÿz_BaseSelectorImpl.registerc                 C   s@   z| j  |  |¡¡}W n$ tk
r:   td |¡ƒd ‚Y nX |S r"   )r   Úpopr$   r%   r   rA   r   r   r   r1   ÷   s
    z_BaseSelectorImpl.unregisterc                 C   s„   z| j |  |¡ }W n$ tk
r8   td |¡ƒd ‚Y nX ||jkr^|  |¡ |  |||¡}n"||jkr€|j|d�}|| j |j	< |S )Nr#   )r   )
r   r$   r%   r   r   r1   r0   r   Ú_replacer   rE   r   r   r   r2   þ   s    


z_BaseSelectorImpl.modifyc                 C   s   | j  ¡  d | _d S r   )r   Úclearr?   r    r   r   r   r5     s    
z_BaseSelectorImpl.closec                 C   s   | j S r   )r?   r    r   r   r   r6     s    z_BaseSelectorImpl.get_mapc                 C   s(   z| j | W S  tk
r"   Y d S X d S r   )r   r%   )r   r   r   r   r   Ú_key_from_fd  s    	z_BaseSelectorImpl._key_from_fd)N)N)r)   r*   r+   r   r$   r0   r1   r2   r5   r6   rI   r   r   r   r   r>   Î   s   

r>   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 ƒ  ¡  tƒ | _tƒ | _d S r   )Úsuperr   ÚsetÚ_readersÚ_writersr    ©Ú	__class__r   r   r   %  s    
zSelectSelector.__init__Nc                    s@   t ƒ  |||¡}|t@ r&| j |j¡ |t@ r<| j |j¡ |S r   )rK   r0   rC   rM   Úaddr   rD   rN   rE   rO   r   r   r0   *  s    zSelectSelector.registerc                    s,   t ƒ  |¡}| j |j¡ | j |j¡ |S r   )rK   r1   rM   Údiscardr   rN   rA   rO   r   r   r1   2  s    zSelectSelector.unregisterZwin32c                 C   s$   t   ||||¡\}}}||| g fS r   )r4   )r   ÚrÚwÚ_r3   Úxr   r   r   Ú_select9  s    zSelectSelector._selectc           	      C   sº   |d krd nt |dƒ}g }z|  | j| jg |¡\}}}W n tk
rP   | Y S X t|ƒ}t|ƒ}||B D ]J}d}||kr‚|tO }||kr’|tO }|  |¡}|rj| 	|||j
@ f¡ qj|S ©Nr   )ÚmaxrW   rM   rN   ÚInterruptedErrorrL   rC   rD   rI   Úappendr   )	r   r3   ÚreadyrS   rT   rU   r   r   rB   r   r   r   r4   ?  s$    

zSelectSelector.select)N)N)N)r)   r*   r+   r   r0   r1   ÚsysÚplatformrW   r4   Ú__classcell__r   r   rO   r   rJ   "  s   
rJ   c                       sZ   e Zd ZdZdZdZ‡ fdd„Zd‡ fdd„	Z‡ fdd„Zd‡ fdd	„	Z	dd
d„Z
‡  ZS )Ú_PollLikeSelectorNc                    s   t ƒ  ¡  |  ¡ | _d S r   )rK   r   Ú_selector_clsr   r    rO   r   r   r   [  s    
z_PollLikeSelector.__init__c                    sl   t ƒ  |||¡}d}|t@ r&|| jO }|t@ r8|| jO }z| j |j|¡ W n   t ƒ  |¡ ‚ Y nX |S rX   )	rK   r0   rC   Ú_EVENT_READrD   Ú_EVENT_WRITEr   r   r1   )r   r   r   r   rB   Zpoller_eventsrO   r   r   r0   _  s    

z_PollLikeSelector.registerc                    s8   t ƒ  |¡}z| j |j¡ W n tk
r2   Y nX |S r   )rK   r1   r   r   ÚOSErrorrA   rO   r   r   r1   m  s    z_PollLikeSelector.unregisterc                    sÔ   z| j |  |¡ }W n$ tk
r8   t|›d�ƒd ‚Y nX d}||jkr¤d}|t@ r^|| jO }|t@ rp|| jO }z| j 	|j
|¡ W n   tƒ  |¡ ‚ Y nX d}||jkr²d}|rÐ|j||d�}|| j |j
< |S )Nz is not registeredFr   T)r   r   )r   r$   r%   r   rC   rb   rD   rc   r   r2   r   rK   r1   r   rG   )r   r   r   r   rB   ZchangedZselector_eventsrO   r   r   r2   w  s.    



z_PollLikeSelector.modifyc                 C   s¸   |d krd }n|dkrd}nt  |d ¡}g }z| j |¡}W n tk
rV   | Y S X |D ]V\}}d}|| j @ r||tO }|| j @ r�|tO }|  	|¡}|r\| 
|||j@ f¡ q\|S )Nr   ç     @�@)ÚmathÚceilr   ÚpollrZ   rb   rD   rc   rC   rI   r[   r   )r   r3   r\   Úfd_event_listr   Úeventr   rB   r   r   r   r4   ’  s(    

z_PollLikeSelector.select)N)N)N)r)   r*   r+   ra   rb   rc   r   r0   r1   r2   r4   r_   r   r   rO   r   r`   U  s   
r`   rh   c                   @   s   e Zd ZejZejZejZ	dS )ÚPollSelectorN)
r)   r*   r+   r4   rh   ra   ÚPOLLINrb   ÚPOLLOUTrc   r   r   r   r   rk   ±  s   rk   Úepollc                       s@   e Zd ZejZejZejZ	dd„ Z
ddd„Z‡ fdd„Z‡  ZS )	ÚEpollSelectorc                 C   s
   | j  ¡ S r   ©r   r
   r    r   r   r   r
   À  s    zEpollSelector.filenoNc           	      C   sÎ   |d krd}n |dkrd}nt  |d ¡d }tt| jƒdƒ}g }z| j ||¡}W n tk
rl   | Y S X |D ]V\}}d}|tj	 @ r’|t
O }|tj @ r¦|tO }|  |¡}|rr| |||j@ f¡ qr|S )Néÿÿÿÿr   re   gü©ñÒMbP?r   )rf   rg   rY   r   r   r   rh   rZ   r4   ÚEPOLLINrD   ÚEPOLLOUTrC   rI   r[   r   )	r   r3   Úmax_evr\   ri   r   rj   r   rB   r   r   r   r4   Ã  s*    

zEpollSelector.selectc                    s   | j  ¡  tƒ  ¡  d S r   ©r   r5   rK   r    rO   r   r   r5   ã  s    
zEpollSelector.close)N)r)   r*   r+   r4   rn   ra   rr   rb   rs   rc   r
   r5   r_   r   r   rO   r   ro   º  s   
 ro   Údevpollc                       s6   e Zd ZejZejZejZ	dd„ Z
‡ fdd„Z‡  ZS )ÚDevpollSelectorc                 C   s
   | j  ¡ S r   rp   r    r   r   r   r
   ð  s    zDevpollSelector.filenoc                    s   | j  ¡  tƒ  ¡  d S r   ru   r    rO   r   r   r5   ó  s    
zDevpollSelector.close)r)   r*   r+   r4   rv   ra   rl   rb   rm   rc   r
   r5   r_   r   r   rO   r   rw   ê  s
   rw   Ú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 ƒ  ¡  t ¡ | _d S r   )rK   r   r4   rx   r   r    rO   r   r   r   ý  s    
zKqueueSelector.__init__c                 C   s
   | j  ¡ S r   rp   r    r   r   r   r
     s    zKqueueSelector.filenoNc                    s�   t ƒ  |||¡}z`|t@ r@t |jtjtj¡}| j 	|gdd¡ |t
@ rnt |jtjtj¡}| j 	|gdd¡ W n   t ƒ  |¡ ‚ Y nX |S rX   )rK   r0   rC   r4   Úkeventr   ÚKQ_FILTER_READZ	KQ_EV_ADDr   ÚcontrolrD   ÚKQ_FILTER_WRITEr1   )r   r   r   r   rB   ÚkevrO   r   r   r0     s     ÿÿzKqueueSelector.registerc                    s¤   t ƒ  |¡}|jt@ rVt |jtjtj¡}z| j	 
|gdd¡ W n tk
rT   Y nX |jt@ r t |jtjtj¡}z| j	 
|gdd¡ W n tk
rž   Y nX |S rX   )rK   r1   r   rC   r4   rz   r   r{   ZKQ_EV_DELETEr   r|   rd   rD   r}   )r   r   rB   r~   rO   r   r   r1     s$    
ÿ
ÿzKqueueSelector.unregisterc           
      C   s¶   |d krd nt |dƒ}t| jƒ}g }z| j d ||¡}W n tk
rP   | Y S X |D ]Z}|j}|j}d}|tj	kr||t
O }|tjkrŽ|tO }|  |¡}	|	rV| |	||	j@ f¡ qV|S rX   )rY   r   r   r   r|   rZ   ZidentÚfilterr4   r{   rC   r}   rD   rI   r[   r   )
r   r3   rt   r\   Zkev_listr~   r   Úflagr   rB   r   r   r   r4   )  s&    




zKqueueSelector.selectc                    s   | j  ¡  tƒ  ¡  d S r   ru   r    rO   r   r   r5   ?  s    
zKqueueSelector.close)N)N)
r)   r*   r+   r   r
   r0   r1   r4   r5   r_   r   r   rO   r   ry   ú  s   
ry   ) Úabcr   r   Úcollectionsr   Zcollections.abcr   rf   r4   r]   rC   rD   r   r   Ú__doc__Úversion_infor   r   r   r   r   r,   r>   rJ   r`   Úhasattrrk   ro   rw   ry   ÚglobalsZDefaultSelectorr   r   r   r   Ú<module>   sJ   
~T3Z
.M