£Á°è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>
a
    XC?hj                     @   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 g dZ
eedrde
g d eedr|e
g d	 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eZG dd dZG dd dZeedr6G 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/d0 d0e Z#dS )1z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/python39/lib64/python3.9/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   s   | j   zvt L}|| tj | jsP||}| jr:qP|rF|   | 	  q"W d    n1 sd0    Y  W d| _| j 
  nd| _| j 
  0 d S r   )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   waitr"   r   r   r   shutdown   s    zBaseServer.shutdownc                 C   s   d S r!   r   r"   r   r   r   r,      s    zBaseServer.service_actionsc                 C   s   | j  }|d u r| j}n| jd ur0t|| j}|d urBt | }t t}|| tj |	|}|r|| 
 W  d    S |d urX|t  }|dk rX|  W  d    S qXW d    n1 s0    Y  d S )Nr   )socketZ
gettimeouttimeoutmintimer&   r'   r(   r)   r*   r+   handle_timeout)r   r5   Zdeadliner.   r/   r   r   r   handle_request  s     




zBaseServer.handle_requestc                 C   s   z|   \}}W n ty$   Y d S 0 | ||rz| || W q tyj   | || | | Y q   | |  Y q0 n
| | d S r!   )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 r!   r   r"   r   r   r   r8   F  s    zBaseServer.handle_timeoutc                 C   s   dS r1   r   rA   r   r   r   r<   M  s    zBaseServer.verify_requestc                 C   s   |  || | | d S r!   )finish_requestr@   rA   r   r   r   r=   U  s    zBaseServer.process_requestc                 C   s   d S r!   r   r"   r   r   r   server_close^  s    zBaseServer.server_closec                 C   s   |  |||  d S r!   )r   rA   r   r   r   rD   f  s    zBaseServer.finish_requestc                 C   s   |  | d S r!   close_requestr   rB   r   r   r   r@   j  s    zBaseServer.shutdown_requestc                 C   s   d S r!   r   rH   r   r   r   rG   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 occurred during processing of request fromr   )printsysstderr	traceback	print_exc)r   rB   rC   rM   r   r   r   r?   r  s    zBaseServer.handle_errorc                 C   s   | S r!   r   r"   r   r   r   	__enter__  s    zBaseServer.__enter__c                 G   s   |    d S r!   )rE   )r   argsr   r   r   __exit__  s    zBaseServer.__exit__)r$   )__name__
__module____qualname__r5   r    r#   r0   r3   r,   r9   r+   r8   r<   r=   rE   rD   r@   rG   r?   rO   rQ   r   r   r   r   r      s$   -

	r   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| _|rPz|   |   W n   |    Y n0 d S r!   )r   r    r4   address_familysocket_typeserver_bindr#   rE   )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_addressr4   
setsockoptZ
SOL_SOCKETZSO_REUSEADDRZbindr   Zgetsocknamer"   r   r   r   rX     s    zTCPServer.server_bindc                 C   s   | j | j d S r!   )r4   Zlistenrequest_queue_sizer"   r   r   r   r#     s    zTCPServer.server_activatec                 C   s   | j   d S r!   )r4   closer"   r   r   r   rE     s    zTCPServer.server_closec                 C   s
   | j  S r!   )r4   filenor"   r   r   r   r^     s    zTCPServer.filenoc                 C   s
   | j  S r!   )r4   Zacceptr"   r   r   r   r:     s    zTCPServer.get_requestc                 C   s2   z| tj W n ty"   Y n0 | | d S r!   )r3   r4   ZSHUT_WRr;   rG   rH   r   r   r   r@     s
    zTCPServer.shutdown_requestc                 C   s   |   d S r!   )r]   rH   r   r   r   rG     s    zTCPServer.close_requestN)T)rR   rS   rT   r4   ZAF_INETrV   ZSOCK_STREAMrW   r\   rZ   r    rX   r#   rE   r^   r:   r@   rG   r   r   r   r   r     s   /

r   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 r!   )r4   Zrecvfrommax_packet_size)r   dataZclient_addrr   r   r   r:     s    zUDPServer.get_requestc                 C   s   d S r!   r   r"   r   r   r   r#     s    zUDPServer.server_activatec                 C   s   |  | d S r!   rF   rH   r   r   r   r@     s    zUDPServer.shutdown_requestc                 C   s   d S r!   r   rH   r   r   r   rG     s    zUDPServer.close_requestN)rR   rS   rT   rZ   r4   Z
SOCK_DGRAMrW   r_   r:   r#   r@   rG   r   r   r   r   r     s   r   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 u rd S t| j | jkrrz tdd\}}| j | W q tyZ   | j   Y q tyn   Y qrY q0 q| j 	 D ]b}z.|rdntj
}t||\}}| j | W q| ty   | j | Y q| ty   Y q|0 q|d S )Nr   )active_childrenlenmax_childrenoswaitpiddiscardChildProcessErrorr%   r;   copyWNOHANG)r   rc   pid_flagsr   r   r   collect_children(  s&    
zForkingMixIn.collect_childrenc                 C   s   |    d S r!   rq   r"   r   r   r   r8   K  s    zForkingMixIn.handle_timeoutc                 C   s   |    d S r!   rr   r"   r   r   r   r,   R  s    zForkingMixIn.service_actionsc                 C   s   t  }|r8| jd u rt | _| j| | | d S d}z^z| || d}W n typ   | || Y n0 W z| 	| W t 
| qt 
| 0 n(z| 	| W t 
| nt 
| 0 0 d S )NrY   r   )rh   r   re   r-   addrG   rD   r>   r?   r@   _exit)r   rB   rC   rn   Zstatusr   r   r   r=   Y  s&    

zForkingMixIn.process_requestc                    s   t    | j| jd d S )Nrb   )superrE   rq   block_on_closer"   	__class__r   r   rE   r  s    
zForkingMixIn.server_close)rR   rS   rT   r5   re   rg   rv   rq   r8   r,   r=   rE   __classcell__r   r   rw   r   r     s   #r   c                       s4   e Zd Z fddZdd Zdd Zdd Z  ZS )	_Threadsc                    s"   |    |jrd S t | d S r!   )reapdaemonru   appendr   threadrw   r   r   r}   {  s    z_Threads.appendc                 C   s   g | d d   | d d < }|S r!   r   )r   resultr   r   r   pop_all  s    z_Threads.pop_allc                 C   s   |   D ]}|  qd S r!   )r   joinr~   r   r   r   r     s    z_Threads.joinc                 C   s   dd | D | d d < d S )Nc                 s   s   | ]}|  r|V  qd S r!   )Zis_alive).0r   r   r   r   	<genexpr>      z _Threads.reap.<locals>.<genexpr>r   r"   r   r   r   r{     s    z_Threads.reap)rR   rS   rT   r}   r   r   r{   ry   r   r   rw   r   rz   w  s   rz   c                   @   s   e Zd Zdd Zdd ZdS )
_NoThreadsc                 C   s   d S r!   r   r~   r   r   r   r}     s    z_NoThreads.appendc                 C   s   d S r!   r   r"   r   r   r   r     s    z_NoThreads.joinN)rR   rS   rT   r}   r   r   r   r   r   r     s   r   c                       s:   e Zd ZdZdZe Zdd Zdd Z fddZ	  Z
S )	r   FTc              	   C   sP   z>z|  || W n ty0   | || Y n0 W | | n| | 0 d S r!   )rD   r>   r?   r@   rA   r   r   r   process_request_thread  s
    z%ThreadingMixIn.process_request_threadc                 C   sL   | j rt| dt  tj| j||fd}| j|_| j	
| |  d S )N_threads)targetrP   )rv   vars
setdefaultrz   r   ZThreadr   daemon_threadsr|   r   r}   start)r   rB   rC   tr   r   r   r=     s    zThreadingMixIn.process_requestc                    s   t    | j  d S r!   )ru   rE   r   r   r"   rw   r   r   rE     s    
zThreadingMixIn.server_close)rR   rS   rT   r   rv   r   r   r   r=   rE   ry   r   r   rw   r   r     s   
r   c                   @   s   e Zd ZdS )r   NrR   rS   rT   r   r   r   r   r     r   r   c                   @   s   e Zd ZdS )r   Nr   r   r   r   r   r     r   r   c                   @   s   e Zd ZdS )r   Nr   r   r   r   r   r     r   r   c                   @   s   e Zd ZdS )r   Nr   r   r   r   r   r     r   r   c                   @   s   e Zd ZejZdS )r   NrR   rS   rT   r4   r   rV   r   r   r   r   r     s   r   c                   @   s   e Zd ZejZdS )r   Nr   r   r   r   r   r     s   r   c                   @   s   e Zd ZdS )r   Nr   r   r   r   r   r     r   r   c                   @   s   e Zd ZdS )r   Nr   r   r   r   r   r     r   r   c                   @   s,   e Zd Zdd Zdd Zdd Zdd Zd	S )
r	   c                 C   s>   || _ || _|| _|   z|   W |   n
|   0 d S r!   )rB   rC   serversetuphandlefinish)r   rB   rC   r   r   r   r   r      s    
zBaseRequestHandler.__init__c                 C   s   d S r!   r   r"   r   r   r   r     s    zBaseRequestHandler.setupc                 C   s   d S r!   r   r"   r   r   r   r     s    zBaseRequestHandler.handlec                 C   s   d S r!   r   r"   r   r   r   r     s    zBaseRequestHandler.finishN)rR   rS   rT   r    r   r   r   r   r   r   r   r	     s   
r	   c                   @   s,   e Zd ZdZdZdZdZdd Zdd ZdS )	r
   rd   r   NFc                 C   sz   | j | _| jd u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)rB   Z
connectionr5   Z
settimeoutdisable_nagle_algorithmr[   r4   ZIPPROTO_TCPZTCP_NODELAYZmakefilerbufsizerfilewbufsize_SocketWriterwfiler"   r   r   r   r     s    


zStreamRequestHandler.setupc                 C   sD   | j js,z| j   W n tjy*   Y n0 | j   | j  d S r!   )r   closedflushr4   errorr]   r   r"   r   r   r   r   #  s    
zStreamRequestHandler.finish)	rR   rS   rT   r   r   r5   r   r   r   r   r   r   r   r
     s   r
   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 r!   )_sock)r   Zsockr   r   r   r    3  s    z_SocketWriter.__init__c                 C   s   dS r1   r   r"   r   r   r   writable6  s    z_SocketWriter.writablec                 C   s>   | j | t|}|jW  d    S 1 s00    Y  d S r!   )r   Zsendall
memoryviewnbytes)r   bZviewr   r   r   write9  s    
z_SocketWriter.writec                 C   s
   | j  S r!   )r   r^   r"   r   r   r   r^   >  s    z_SocketWriter.filenoN)rR   rS   rT   r    r   r   r^   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   rB   Zpacketr4   r   r   )r   r   r   r   r   r   E  s    zDatagramRequestHandler.setupc                 C   s   | j | j | j d S r!   )r4   Zsendtor   getvaluerC   r"   r   r   r   r   K  s    zDatagramRequestHandler.finishN)rR   rS   rT   r   r   r   r   r   r   r   A  s   r   )$__version__r4   r(   rh   rK   r   r   r   r7   r   __all__hasattrextendr   r&   ZSelectSelectorr   r   r   r   listrz   r   r   r   r   r   r   r   r   r   r   r	   r
   r   r   r   r   r   r   <module>{   sL   


 n~
X(.-