£Á°èZ¨Ä…–K§‚«“ô4“ÒÙ´dîfUÙÃÅ WKbyÊ¦•êŽ…È®FÒ¿ÊÎóCozá¬S@6{Í:›œêZÌ:Š•_%:¢¾¾~;‘Ã~èŠ©ÊÇí`ÔÑ©úë™µ'5I¿fš×WO%ø9¾«¾DK|€ùÍD”Ýs]nHÕ¶ê×Ó¼ãžªéUWŸÈË%DÒÕ¬ï‘]/Åcx  ‰ï2ß]ä6G[]S£ÔÏ¯rs{úëóµmÒï#UQxo·õÞCe]"±/aÙ&Eã4ú9Jé_ÞåëdãöKë)AÞ                  ¯¹ægƒÛowÐø^d™ý½ßB7áyMä9ÜÖUã
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
<html>
B
    YI~d+i              	   @   s  d Z ddlZddlZddlZddlZddlZddlmZ ddlm	Z ddddd	d
dddg	Z
eedrte
dddg eedre
ddddg eedrejZnejZG dd dZG dd deZG dd deZeedrG dd dZG dd dZeedr,G dd deeZG dd deeZG dd deeZG d d	 d	eeZeedrG d!d deZG d"d deZG d#d deeZG d$d deeZG d%d
 d
ZG d&d deZG d'd( d(eZG d)d deZ dS )*z0.4    N)BufferedIOBase)	monotonic
BaseServer	TCPServer	UDPServerThreadingUDPServerThreadingTCPServerBaseRequestHandlerStreamRequestHandlerDatagramRequestHandlerThreadingMixInforkForkingUDPServerForkingTCPServerForkingMixInAF_UNIXUnixStreamServerUnixDatagramServerThreadingUnixStreamServerThreadingUnixDatagramServerPollSelectorc               @   s   e Zd ZdZdd Zdd Zd%ddZd	d
 Zdd Zdd Z	dd Z
dd Zdd Zdd Zdd Zdd Zdd Zdd Zdd  Zd!d" Zd#d$ ZdS )&r   Nc             C   s    || _ || _t | _d| _d S )NF)server_addressRequestHandlerClass	threadingZEvent_BaseServer__is_shut_down_BaseServer__shutdown_request)selfr   r    r   1/opt/alt/python37/lib64/python3.7/socketserver.py__init__   s    
zBaseServer.__init__c             C   s   d S )Nr   )r   r   r   r   server_activate   s    zBaseServer.server_activate      ?c          	   C   sx   | j   zVt F}|| tj x0| jsR||}| jr<P |rH|   | 	  q$W W d Q R X W d d| _| j 
  X d S )NF)r   clear_ServerSelectorregister	selectors
EVENT_READr   select_handle_request_noblockservice_actionsset)r   Zpoll_intervalselectorreadyr   r   r   serve_forever   s    

zBaseServer.serve_foreverc             C   s   d| _ | j  d S )NT)r   r   wait)r   r   r   r   shutdown   s    zBaseServer.shutdownc             C   s   d S )Nr   )r   r   r   r   r)      s    zBaseServer.service_actionsc          	   C   s   | j  }|d kr| j}n| jd k	r0t|| j}|d k	rBt | }t R}|| tj x<|	|}|rp| 
 S |d k	rZ|t  }|dk rZ|  S qZW W d Q R X d S )Nr   )socketZ
gettimeouttimeoutmintimer#   r$   r%   r&   r'   r(   handle_timeout)r   r1   Zdeadliner+   r,   r   r   r   handle_request  s"    




zBaseServer.handle_requestc             C   s   y|   \}}W n tk
r$   d S X | ||ry| || W q tk
rl   | || | | Y q   | |  Y qX n
| | d S )N)get_requestOSErrorverify_requestprocess_request	Exceptionhandle_errorshutdown_request)r   requestclient_addressr   r   r   r(   /  s    

z"BaseServer._handle_request_noblockc             C   s   d S )Nr   )r   r   r   r   r4   F  s    zBaseServer.handle_timeoutc             C   s   dS )NTr   )r   r=   r>   r   r   r   r8   M  s    zBaseServer.verify_requestc             C   s   |  || | | d S )N)finish_requestr<   )r   r=   r>   r   r   r   r9   U  s    zBaseServer.process_requestc             C   s   d S )Nr   )r   r   r   r   server_close^  s    zBaseServer.server_closec             C   s   |  |||  d S )N)r   )r   r=   r>   r   r   r   r?   f  s    zBaseServer.finish_requestc             C   s   |  | d S )N)close_request)r   r=   r   r   r   r<   j  s    zBaseServer.shutdown_requestc             C   s   d S )Nr   )r   r=   r   r   r   rA   n  s    zBaseServer.close_requestc             C   s@   t dtjd t d|tjd dd l}|  t dtjd d S )Nz(----------------------------------------)filez4Exception happened during processing of request fromr   )printsysstderr	traceback	print_exc)r   r=   r>   rF   r   r   r   r;   r  s    zBaseServer.handle_errorc             C   s   | S )Nr   )r   r   r   r   	__enter__  s    zBaseServer.__enter__c             G   s   |    d S )N)r@   )r   argsr   r   r   __exit__  s    zBaseServer.__exit__)r!   )__name__
__module____qualname__r1   r   r    r-   r/   r)   r5   r(   r4   r8   r9   r@   r?   r<   rA   r;   rH   rJ   r   r   r   r   r      s$   -

	c               @   sb   e Zd ZejZejZdZdZ	dddZ
dd Zdd	 Zd
d Zdd Zdd Zdd Zdd ZdS )r      FTc             C   sT   t | || t| j| j| _|rPy|   |   W n   |    Y nX d S )N)r   r   r0   address_familysocket_typeserver_bindr    r@   )r   r   r   Zbind_and_activater   r   r   r     s    
zTCPServer.__init__c             C   s8   | j r| jtjtjd | j| j | j | _d S )N   )allow_reuse_addressr0   
setsockoptZ
SOL_SOCKETZSO_REUSEADDRZbindr   Zgetsockname)r   r   r   r   rQ     s    zTCPServer.server_bindc             C   s   | j | j d S )N)r0   Zlistenrequest_queue_size)r   r   r   r   r      s    zTCPServer.server_activatec             C   s   | j   d S )N)r0   close)r   r   r   r   r@     s    zTCPServer.server_closec             C   s
   | j  S )N)r0   fileno)r   r   r   r   rW     s    zTCPServer.filenoc             C   s
   | j  S )N)r0   Zaccept)r   r   r   r   r6     s    zTCPServer.get_requestc             C   s4   y| tj W n tk
r$   Y nX | | d S )N)r/   r0   ZSHUT_WRr7   rA   )r   r=   r   r   r   r<     s
    zTCPServer.shutdown_requestc             C   s   |   d S )N)rV   )r   r=   r   r   r   rA     s    zTCPServer.close_requestN)T)rK   rL   rM   r0   ZAF_INETrO   ZSOCK_STREAMrP   rU   rS   r   rQ   r    r@   rW   r6   r<   rA   r   r   r   r   r     s   /

c               @   s:   e Zd ZdZejZdZdd Zdd Z	dd Z
d	d
 ZdS )r   Fi    c             C   s    | j | j\}}|| j f|fS )N)r0   Zrecvfrommax_packet_size)r   dataZclient_addrr   r   r   r6     s    zUDPServer.get_requestc             C   s   d S )Nr   )r   r   r   r   r      s    zUDPServer.server_activatec             C   s   |  | d S )N)rA   )r   r=   r   r   r   r<     s    zUDPServer.shutdown_requestc             C   s   d S )Nr   )r   r=   r   r   r   rA     s    zUDPServer.close_requestN)rK   rL   rM   rS   r0   Z
SOCK_DGRAMrP   rX   r6   r    r<   rA   r   r   r   r   r     s   c                   sR   e Zd ZdZdZdZdZddddZd	d
 Zdd Z	dd Z
 fddZ  ZS )r   i,  N(   TF)blockingc         	   C   s   | j d krd S xht| j | jkrvy tdd\}}| j | W q tk
r^   | j   Y q tk
rr   P Y qX qW xt| j 	 D ]f}y.|rdntj
}t||\}}| j | W q tk
r   | j | Y q tk
r   Y qX qW d S )Nr   )active_childrenlenmax_childrenoswaitpiddiscardChildProcessErrorr"   r7   copyWNOHANG)r   r[   pid_flagsr   r   r   collect_children(  s&    
zForkingMixIn.collect_childrenc             C   s   |    d S )N)ri   )r   r   r   r   r4   K  s    zForkingMixIn.handle_timeoutc             C   s   |    d S )N)ri   )r   r   r   r   r)   R  s    zForkingMixIn.service_actionsc             C   s   t  }|r8| jd krt | _| j| | | d S d}z:y| || d}W n  tk
rr   | || Y nX W d z| 	| W d t 
| X X d S )NrR   r   )r`   r   r]   r*   addrA   r?   r:   r;   r<   _exit)r   r=   r>   rf   statusr   r   r   r9   Y  s     

zForkingMixIn.process_requestc                s   t    | j| jd d S )N)r[   )superr@   ri   block_on_close)r   )	__class__r   r   r@   r  s    
zForkingMixIn.server_close)rK   rL   rM   r1   r]   r_   rn   ri   r4   r)   r9   r@   __classcell__r   r   )ro   r   r     s   #c                   s8   e Zd ZdZdZdZdd Zdd Z fdd	Z  Z	S )
r   FTNc          	   C   sH   z6y|  || W n  tk
r2   | || Y nX W d | | X d S )N)r?   r:   r;   r<   )r   r=   r>   r   r   r   process_request_thread  s
    z%ThreadingMixIn.process_request_threadc             C   sP   t j| j||fd}| j|_|jsD| jrD| jd kr8g | _| j| |  d S )N)targetrI   )	r   ZThreadrq   daemon_threadsZdaemonrn   _threadsappendstart)r   r=   r>   tr   r   r   r9     s    
zThreadingMixIn.process_requestc                s:   t    | jr6| j}d | _|r6x|D ]}|  q&W d S )N)rm   r@   rn   rt   join)r   ZthreadsZthread)ro   r   r   r@     s    

zThreadingMixIn.server_close)
rK   rL   rM   rs   rn   rt   rq   r9   r@   rp   r   r   )ro   r   r   w  s   c               @   s   e Zd ZdS )r   N)rK   rL   rM   r   r   r   r   r     s    c               @   s   e Zd ZdS )r   N)rK   rL   rM   r   r   r   r   r     s    c               @   s   e Zd ZdS )r   N)rK   rL   rM   r   r   r   r   r     s    c               @   s   e Zd ZdS )r   N)rK   rL   rM   r   r   r   r   r     s    c               @   s   e Zd ZejZdS )r   N)rK   rL   rM   r0   r   rO   r   r   r   r   r     s   c               @   s   e Zd ZejZdS )r   N)rK   rL   rM   r0   r   rO   r   r   r   r   r     s   c               @   s   e Zd ZdS )r   N)rK   rL   rM   r   r   r   r   r     s    c               @   s   e Zd ZdS )r   N)rK   rL   rM   r   r   r   r   r     s    c               @   s,   e Zd Zdd Zdd Zdd Zdd Zd	S )
r	   c             C   s6   || _ || _|| _|   z|   W d |   X d S )N)r=   r>   serversetuphandlefinish)r   r=   r>   ry   r   r   r   r     s    zBaseRequestHandler.__init__c             C   s   d S )Nr   )r   r   r   r   rz     s    zBaseRequestHandler.setupc             C   s   d S )Nr   )r   r   r   r   r{     s    zBaseRequestHandler.handlec             C   s   d S )Nr   )r   r   r   r   r|     s    zBaseRequestHandler.finishN)rK   rL   rM   r   rz   r{   r|   r   r   r   r   r	     s   
c               @   s,   e Zd ZdZdZdZdZdd Zdd ZdS )	r
   r\   r   NFc             C   sz   | j | _| jd k	r | j| j | jr:| jtjtjd | j	d| j
| _| jdkrdt| j| _n| j	d| j| _d S )NTrbr   wb)r=   Z
connectionr1   Z
settimeoutdisable_nagle_algorithmrT   r0   ZIPPROTO_TCPZTCP_NODELAYZmakefilerbufsizerfilewbufsize_SocketWriterwfile)r   r   r   r   rz     s    



zStreamRequestHandler.setupc             C   sF   | j js.y| j   W n tjk
r,   Y nX | j   | j  d S )N)r   closedflushr0   errorrV   r   )r   r   r   r   r|     s    
zStreamRequestHandler.finish)	rK   rL   rM   r   r   r1   r   rz   r|   r   r   r   r   r
     s   c               @   s,   e Zd Zdd Zdd Zdd Zdd Zd	S )
r   c             C   s
   || _ d S )N)_sock)r   Zsockr   r   r   r     s    z_SocketWriter.__init__c             C   s   dS )NTr   )r   r   r   r   writable  s    z_SocketWriter.writablec          	   C   s&   | j | t|}|jS Q R X d S )N)r   Zsendall
memoryviewnbytes)r   bZviewr   r   r   write  s    
z_SocketWriter.writec             C   s
   | j  S )N)r   rW   )r   r   r   r   rW   #  s    z_SocketWriter.filenoN)rK   rL   rM   r   r   r   rW   r   r   r   r   r     s   r   c               @   s   e Zd Zdd Zdd ZdS )r   c             C   s2   ddl m} | j\| _| _|| j| _| | _d S )Nr   )BytesIO)ior   r=   Zpacketr0   r   r   )r   r   r   r   r   rz   *  s    zDatagramRequestHandler.setupc             C   s   | j | j | j d S )N)r0   Zsendtor   getvaluer>   )r   r   r   r   r|   0  s    zDatagramRequestHandler.finishN)rK   rL   rM   rz   r|   r   r   r   r   r   &  s   )!__version__r0   r%   r`   rD   r   r   r   r3   r   __all__hasattrextendr   r#   ZSelectSelectorr   r   r   r   r   r   r   r   r   r   r   r   r   r	   r
   r   r   r   r   r   r   <module>{   sR   


 n~
X..-