a XC?h�j�@s�dZddlZddlZddlZddlZddlZddlmZddlm Zgd�Z e ed�rde � gd��e ed�r|e � gd ��e ed �r�ej ZnejZGd d �d �ZGd d�de�ZGdd�de�Ze ed�r�Gdd�d�ZGdd�de�ZGdd�d�ZGdd�d�Ze ed��r6Gdd�dee�ZGdd�dee�ZGdd�dee�ZGdd �d ee�Ze ed��r�Gd!d"�d"e�ZGd#d$�d$e�ZGd%d&�d&ee�ZGd'd(�d(ee�ZGd)d*�d*�Z Gd+d,�d,e �Z!Gd-d.�d.e�Z"Gd/d0�d0e �Z#dS)1z0.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�eZdZdZdd�Zdd�Zd%dd�Zd d �Zd d �Zd d�Z dd�Z dd�Z dd�Z dd�Z dd�Zdd�Zdd�Zdd�Zdd �Zd!d"�Zd#d$�ZdS)&rNcCs ||_||_t��|_d|_dS�NF)�server_address�RequestHandlerClass� threadingZEvent�_BaseServer__is_shut_down�_BaseServer__shutdown_request)�selfrr�r�1/opt/alt/python39/lib64/python3.9/socketserver.py�__init__�s zBaseServer.__init__cCsdS�Nr�rrrr�server_activate�szBaseServer.server_activate��?cCs�|j��zvt��L}|�|tj�|jsP|�|�}|jr:qP|rF|��|� �q"Wd�n1sd0YWd|_|j� �nd|_|j� �0dSr) r�clear�_ServerSelector�register� selectors� EVENT_READr�select�_handle_request_noblock�service_actions�set)rZ poll_interval�selector�readyrrr� serve_forever�s  * �zBaseServer.serve_forevercCsd|_|j��dS�NT)rr�waitr"rrr�shutdown�szBaseServer.shutdowncCsdSr!rr"rrrr,�szBaseServer.service_actionscCs�|j��}|dur|j}n|jdur0t||j�}|durBt�|}t��t}|�|tj�|� |�}|r||� �Wd�S|durX|t�}|dkrX|� �Wd�SqXWd�n1s�0YdS)Nr) �socketZ gettimeout�timeout�min�timer&r'r(r)r*r+�handle_timeout)rr5Zdeadliner.r/rrr�handle_requests       zBaseServer.handle_requestcCs�z|��\}}Wnty$YdS0|�||�r�z|�||�Wq�tyj|�||�|�|�Yq�|�|��Yq�0n |�|�dSr!)� get_request�OSError�verify_request�process_request� Exception� handle_error�shutdown_request�r�request�client_addressrrrr+/s      z"BaseServer._handle_request_noblockcCsdSr!rr"rrrr8FszBaseServer.handle_timeoutcCsdSr1rrArrrr<MszBaseServer.verify_requestcCs|�||�|�|�dSr!)�finish_requestr@rArrrr=Us zBaseServer.process_requestcCsdSr!rr"rrr� server_close^szBaseServer.server_closecCs|�|||�dSr!)rrArrrrDfszBaseServer.finish_requestcCs|�|�dSr!�� close_request�rrBrrrr@jszBaseServer.shutdown_requestcCsdSr!rrHrrrrGnszBaseServer.close_requestcCs@tdtjd�td|tjd�ddl}|��tdtjd�dS)Nz(----------------------------------------)�filez4Exception occurred during processing of request fromr)�print�sys�stderr� traceback� print_exc)rrBrCrMrrrr?rs�zBaseServer.handle_errorcCs|Sr!rr"rrr� __enter__szBaseServer.__enter__cGs |��dSr!)rE)r�argsrrr�__exit__�szBaseServer.__exit__)r$)�__name__� __module__� __qualname__r5r r#r0r3r,r9r+r8r<r=rErDr@rGr?rOrQrrrrr�s$-    rc@sbeZdZejZejZdZdZ ddd�Z dd�Z dd �Z d d �Z d d �Zdd�Zdd�Zdd�ZdS)r�FTcCsTt�|||�t�|j|j�|_|rPz|��|��Wn|���Yn0dSr!)rr r4�address_family� socket_type� server_bindr#rE)rrrZbind_and_activaterrrr �s� zTCPServer.__init__cCs8|jr|j�tjtjd�|j�|j�|j��|_dS)N�)�allow_reuse_addressr4� setsockoptZ SOL_SOCKETZ SO_REUSEADDRZbindrZ getsocknamer"rrrrX�szTCPServer.server_bindcCs|j�|j�dSr!)r4Zlisten�request_queue_sizer"rrrr#�szTCPServer.server_activatecCs|j��dSr!)r4�closer"rrrrE�szTCPServer.server_closecCs |j��Sr!)r4�filenor"rrrr^�szTCPServer.filenocCs |j��Sr!)r4Zacceptr"rrrr:�szTCPServer.get_requestcCs2z|�tj�Wnty"Yn0|�|�dSr!)r3r4ZSHUT_WRr;rGrHrrrr@�s  zTCPServer.shutdown_requestcCs |��dSr!)r]rHrrrrG�szTCPServer.close_requestN)T)rRrSrTr4ZAF_INETrVZ SOCK_STREAMrWr\rZr rXr#rEr^r:r@rGrrrrr�s/   rc@s:eZdZdZejZdZdd�Zdd�Z dd�Z d d �Z d S) rFi cCs |j�|j�\}}||jf|fSr!)r4Zrecvfrom�max_packet_size)r�dataZ client_addrrrrr:szUDPServer.get_requestcCsdSr!rr"rrrr#szUDPServer.server_activatecCs|�|�dSr!rFrHrrrr@szUDPServer.shutdown_requestcCsdSr!rrHrrrrGszUDPServer.close_requestN) rRrSrTrZr4Z SOCK_DGRAMrWr_r:r#r@rGrrrrrsrcsReZdZdZdZdZdZdd�dd�Zd d �Zd d �Z d d�Z �fdd�Z �Z S)ri,N�(TF��blockingc Cs�|jdurdSt|j�|jkrrz t�dd�\}}|j�|�WqtyZ|j��YqtynYqrYq0q|j� �D]b}z.|r�dntj }t�||�\}}|j�|�Wq|ty�|j�|�Yq|ty�Yq|0q|dS)N�����r) �active_children�len� max_children�os�waitpid�discard�ChildProcessErrorr%r;�copy�WNOHANG)rrc�pid�_�flagsrrr�collect_children(s&      zForkingMixIn.collect_childrencCs |��dSr!�rqr"rrrr8KszForkingMixIn.handle_timeoutcCs |��dSr!rrr"rrrr,RszForkingMixIn.service_actionscCs�t��}|r8|jdurt�|_|j�|�|�|�dSd}z^z|�||�d}Wntyp|�||�Yn0Wz|� |�Wt� |�q�t� |�0n(z|� |�Wt� |�n t� |�00dS)NrYr) rhr rer-�addrGrDr>r?r@�_exit)rrBrCrnZstatusrrrr=Ys&      � zForkingMixIn.process_requestcst���|j|jd�dS)Nrb)�superrErq�block_on_closer"�� __class__rrrErs zForkingMixIn.server_close) rRrSrTr5rergrvrqr8r,r=rE� __classcell__rrrwrrs#rcs4eZdZ�fdd�Zdd�Zdd�Zdd�Z�ZS) �_Threadscs"|��|jrdSt��|�dSr!)�reap�daemonru�append�r�threadrwrrr}{sz_Threads.appendcCsg|dd�|dd�<}|Sr!r)r�resultrrr�pop_all�sz_Threads.pop_allcCs|��D] }|��qdSr!)r��joinr~rrrr��s z _Threads.joincCsdd�|D�|dd�<dS)Ncss|]}|��r|VqdSr!)Zis_alive)�.0rrrr� ��z _Threads.reap..rr"rrrr{�sz _Threads.reap)rRrSrTr}r�r�r{ryrrrwrrzws rzc@seZdZdd�Zdd�ZdS)� _NoThreadscCsdSr!rr~rrrr}�sz_NoThreads.appendcCsdSr!rr"rrrr��sz_NoThreads.joinN)rRrSrTr}r�rrrrr��sr�cs:eZdZdZdZe�Zdd�Zdd�Z�fdd�Z �Z S) r FTc CsPz>z|�||�Wnty0|�||�Yn0W|�|�n |�|�0dSr!)rDr>r?r@rArrr�process_request_thread�s  z%ThreadingMixIn.process_request_threadcCsL|jrt|��dt��tj|j||fd�}|j|_|j � |�|� �dS)N�_threads)�targetrP) rv�vars� setdefaultrzrZThreadr��daemon_threadsr|r�r}�start)rrBrC�trrrr=�s� zThreadingMixIn.process_requestcst���|j��dSr!)rurEr�r�r"rwrrrE�s zThreadingMixIn.server_close) rRrSrTr�rvr�r�r�r=rEryrrrwrr �s   r c@s eZdZdS)rN�rRrSrTrrrrr�r�rc@s eZdZdS)rNr�rrrrr�r�rc@s eZdZdS)rNr�rrrrr�r�rc@s eZdZdS)rNr�rrrrr�r�rc@seZdZejZdS)rN�rRrSrTr4rrVrrrrr�src@seZdZejZdS)rNr�rrrrr�src@s eZdZdS)rNr�rrrrr�r�rc@s eZdZdS)rNr�rrrrr�r�rc@s,eZdZdd�Zdd�Zdd�Zdd�Zd S) r cCs>||_||_||_|��z|��W|��n |��0dSr!)rBrC�server�setup�handle�finish)rrBrCr�rrrr �s zBaseRequestHandler.__init__cCsdSr!rr"rrrr��szBaseRequestHandler.setupcCsdSr!rr"rrrr��szBaseRequestHandler.handlecCsdSr!rr"rrrr��szBaseRequestHandler.finishN)rRrSrTr r�r�r�rrrrr �s r c@s,eZdZdZdZdZdZdd�Zdd�ZdS) r rdrNFcCsz|j|_|jdur |j�|j�|jr:|j�tjtjd�|j� d|j �|_ |j dkrdt |j�|_n|j� d|j �|_dS)NT�rbr�wb)rBZ connectionr5Z settimeout�disable_nagle_algorithmr[r4Z IPPROTO_TCPZ TCP_NODELAYZmakefile�rbufsize�rfile�wbufsize� _SocketWriter�wfiler"rrrr�s  � zStreamRequestHandler.setupcCsD|jjs,z|j��Wntjy*Yn0|j��|j��dSr!)r��closed�flushr4�errorr]r�r"rrrr�#s zStreamRequestHandler.finish) rRrSrTr�r�r5r�r�r�rrrrr s   r c@s,eZdZdd�Zdd�Zdd�Zdd�Zd S) r�cCs ||_dSr!)�_sock)rZsockrrrr 3sz_SocketWriter.__init__cCsdSr1rr"rrr�writable6sz_SocketWriter.writablecCs>|j�|�t|��}|jWd�S1s00YdSr!)r�Zsendall� memoryview�nbytes)r�bZviewrrr�write9s  z_SocketWriter.writecCs |j��Sr!)r�r^r"rrrr^>sz_SocketWriter.filenoN)rRrSrTr r�r�r^rrrrr�.sr�c@seZdZdd�Zdd�ZdS)r cCs2ddlm}|j\|_|_||j�|_|�|_dS)Nr)�BytesIO)�ior�rBZpacketr4r�r�)rr�rrrr�Es  zDatagramRequestHandler.setupcCs|j�|j��|j�dSr!)r4Zsendtor��getvaluerCr"rrrr�KszDatagramRequestHandler.finishN)rRrSrTr�r�rrrrr Asr )$� __version__r4r(rhrKrr�rr7r�__all__�hasattr�extendrr&ZSelectSelectorrrrr�listrzr�r rrrrrrrrr r r�r rrrr�{sL     n~ X (  .-