grthtrhthjhtyjytjytkergtrhtrjytjerhrfh4:24 29/09/20263 Õì2a‚iã@sdZddlZddlZddlZddlZddlZy ddlZWnek rTddlZYnXddl m Z ddl m Z ddddd d d d d g Z eedƒrže jdddgƒeedƒrºe jddddgƒeedƒrÌejZnejZGdd„dƒZGdd„deƒZGdd„deƒZeedƒ�rGdd„dƒZGdd „d ƒZeedƒ�rXGdd„deeƒZGdd„deeƒZGdd„deeƒZGd d „d eeƒZeedƒ�rÌGd!d„deƒZGd"d„deƒZGd#d„deeƒZGd$d„deeƒZGd%d „d ƒZ Gd&d „d e ƒZ!Gd'd(„d(e ƒZ"Gd)d „d e ƒZ#dS)*z0.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 ||_||_tjƒ|_d|_dS)NF)Úserver_addressÚRequestHandlerClassÚ threadingZEventÚ_BaseServer__is_shut_downÚ_BaseServer__shutdown_request)Úselfrr©rú1/opt/alt/python36/lib64/python3.6/socketserver.pyÚ__init__Ìs zBaseServer.__init__cCsdS)Nr)rrrrÚserver_activateÓszBaseServer.server_activateçà?cCsx|jjƒzVtƒ�F}|j|tjƒx0|jsR|j|ƒ}|jrrrrr8QszBaseServer.verify_requestcCs|j||ƒ|j|ƒdS)N)Úfinish_requestr<)rr=r>rrrr9Ys zBaseServer.process_requestcCsdS)Nr)rrrrÚ server_closebszBaseServer.server_closecCs|j|||ƒdS)N)r)rr=r>rrrr?jszBaseServer.finish_requestcCs|j|ƒdS)N)Ú close_request)rr=rrrr<nszBaseServer.shutdown_requestcCsdS)Nr)rr=rrrrArszBaseServer.close_requestcCsHtddtjd�td|tjd�ddl}|jƒtddtjd�dS)Nú-é()Úfilez4Exception happened during processing of request fromr)ÚprintÚsysÚstderrÚ tracebackÚ print_exc)rr=r>rHrrrr;vs  zBaseServer.handle_errorcCs|S)Nr)rrrrÚ __enter__ƒszBaseServer.__enter__cGs |jƒdS)N)r@)rÚargsrrrÚ__exit__†szBaseServer.__exit__)r!)Ú__name__Ú __module__Ú __qualname__r1rr r-r/r)r5r(r4r8r9r@r?r<rAr;rJrLrrrrr�s$-    c@sbeZdZejZejZdZdZ ddd„Z dd„Z dd „Z d d „Z d d „Zdd„Zdd„Zdd„ZdS)réFTc CsTtj|||ƒtj|j|jƒ|_|rPy|jƒ|jƒWn|jƒ‚YnXdS)N)rrr0Úaddress_familyÚ socket_typeÚ server_bindr r@)rrrZbind_and_activaterrrrÁs  zTCPServer.__init__cCs8|jr|jjtjtjdƒ|jj|jƒ|jjƒ|_dS)Né)Úallow_reuse_addressr0Ú setsockoptZ SOL_SOCKETZ SO_REUSEADDRZbindrZ getsockname)rrrrrSÎszTCPServer.server_bindcCs|jj|jƒdS)N)r0ZlistenÚrequest_queue_size)rrrrr ÙszTCPServer.server_activatecCs|jjƒdS)N)r0Úclose)rrrrr@ászTCPServer.server_closecCs |jjƒS)N)r0Úfileno)rrrrrYészTCPServer.filenocCs |jjƒS)N)r0Zaccept)rrrrr6ñszTCPServer.get_requestc Cs4y|jtjƒWntk r$YnX|j|ƒdS)N)r/r0ZSHUT_WRr7rA)rr=rrrr<ùs zTCPServer.shutdown_requestcCs |jƒdS)N)rX)rr=rrrrAszTCPServer.close_requestN)T)rMrNrOr0ZAF_INETrQZ SOCK_STREAMrRrWrUrrSr r@rYr6r<rArrrrrŠs/   c@s:eZdZdZejZdZdd„Zdd„Z dd„Z d d „Z d S) rFi cCs |jj|jƒ\}}||jf|fS)N)r0ZrecvfromÚmax_packet_size)rÚdataZ client_addrrrrr6szUDPServer.get_requestcCsdS)Nr)rrrrr szUDPServer.server_activatecCs|j|ƒdS)N)rA)rr=rrrr<szUDPServer.shutdown_requestcCsdS)Nr)rr=rrrrAszUDPServer.close_requestN) rMrNrOrUr0Z SOCK_DGRAMrRrZr6r r<rArrrrrscsReZdZdZdZdZdZddœdd„Zdd „Zd d „Z d d „Z ‡fdd„Z ‡Z S)ri,NrCF)Úblockingc Csò|jdkrdSxht|jƒ|jkrvy tjddƒ\}}|jj|ƒWqtk r^|jjƒYqtk rrPYqXqWxt|jj ƒD]f}y.|r’dntj }tj||ƒ\}}|jj|ƒWq„tk rÖ|jj|ƒYq„tk rèYq„Xq„WdS)NrTréÿÿÿÿ) Úactive_childrenÚlenÚ max_childrenÚosÚwaitpidÚdiscardÚChildProcessErrorr"r7ÚcopyÚWNOHANG)rr\ÚpidÚ_ÚflagsrrrÚcollect_children,s&  zForkingMixIn.collect_childrencCs |jƒdS)N)rj)rrrrr4OszForkingMixIn.handle_timeoutcCs |jƒdS)N)rj)rrrrr)VszForkingMixIn.service_actionscCsštjƒ}|r8|jdkrtƒ|_|jj|ƒ|j|ƒdSd}z:y|j||ƒd}Wn tk rr|j||ƒYnXWdz|j |ƒWdtj |ƒXXdS)NrTr) rar r^r*ÚaddrAr?r:r;r<Ú_exit)rr=r>rgÚstatusrrrr9]s     zForkingMixIn.process_requestcstƒjƒ|j|jd�dS)N)r\)Úsuperr@rjÚ_block_on_close)r)Ú __class__rrr@vs zForkingMixIn.server_close) rMrNrOr1r^r`rorjr4r)r9r@Ú __classcell__rr)rprr#s#cs8eZdZdZdZdZdd„Zdd„Z‡fdd„Z‡Z S) r FNcCsHz6y|j||ƒWn tk r2|j||ƒYnXWd|j|ƒXdS)N)r?r:r;r<)rr=r>rrrÚprocess_request_thread‡s z%ThreadingMixIn.process_request_threadcCsRtj|j||fd�}|j|_|j rF|jrF|jdkr:g|_|jj|ƒ|jƒdS)N)ÚtargetrK) rZThreadrrÚdaemon_threadsZdaemonroÚ_threadsÚappendÚstart)rr=r>Útrrrr9”s   zThreadingMixIn.process_requestcs:tƒjƒ|jr6|j}d|_|r6x|D] }|jƒq&WdS)N)rnr@roruÚjoin)rZthreadsZthread)rprrr@Ÿs  zThreadingMixIn.server_close) rMrNrOrtrorurrr9r@rqrr)rprr {s   c@s eZdZdS)rN)rMrNrOrrrrrªsc@s eZdZdS)rN)rMrNrOrrrrr«sc@s eZdZdS)rN)rMrNrOrrrrr­sc@s eZdZdS)rN)rMrNrOrrrrr®sc@seZdZejZdS)rN)rMrNrOr0rrQrrrrr²sc@seZdZejZdS)rN)rMrNrOr0rrQrrrrrµsc@s eZdZdS)rN)rMrNrOrrrrr¸sc@s eZdZdS)rN)rMrNrOrrrrrºsc@s,eZdZdd„Zdd„Zdd„Zdd„Zd S) r c Cs6||_||_||_|jƒz |jƒWd|jƒXdS)N)r=r>ÚserverÚsetupÚhandleÚfinish)rr=r>rzrrrrÎs zBaseRequestHandler.__init__cCsdS)Nr)rrrrr{ØszBaseRequestHandler.setupcCsdS)Nr)rrrrr|ÛszBaseRequestHandler.handlecCsdS)Nr)rrrrr}ÞszBaseRequestHandler.finishN)rMrNrOrr{r|r}rrrrr ¼s c@s,eZdZd ZdZdZdZdd„Zdd„ZdS) r rTrNFcCsz|j|_|jdk r |jj|jƒ|jr:|jjtjtjdƒ|jj d|j ƒ|_ |j dkrdt |jƒ|_n|jj d|j ƒ|_dS)NTÚrbrÚwb)r=Z connectionr1Z settimeoutÚdisable_nagle_algorithmrVr0Z IPPROTO_TCPZ TCP_NODELAYÚmakefileÚrbufsizeÚrfileÚwbufsizeÚ _SocketWriterÚwfile)rrrrr{ÿs    zStreamRequestHandler.setupc CsF|jjs.y|jjƒWntjk r,YnX|jjƒ|jjƒdS)N)r†ÚclosedÚflushr0ÚerrorrXrƒ)rrrrr} s zStreamRequestHandler.finishr]) rMrNrOr‚r„r1r€r{r}rrrrr ês   c@s,eZdZdd„Zdd„Zdd„Zdd„Zd S) r…cCs ||_dS)N)Ú_sock)rZsockrrrrsz_SocketWriter.__init__cCsdS)NTr)rrrrÚwritablesz_SocketWriter.writablec Cs&|jj|ƒt|ƒ�}|jSQRXdS)N)rŠZsendallÚ memoryviewÚnbytes)rÚbZviewrrrÚwrite"s  z_SocketWriter.writecCs |jjƒS)N)rŠrY)rrrrrY'sz_SocketWriter.filenoN)rMrNrOrr‹r�rYrrrrr…sr…c@seZdZdd„Zdd„ZdS)r cCs2ddlm}|j\|_|_||jƒ|_|ƒ|_dS)Nr)ÚBytesIO)Úior�r=Zpacketr0rƒr†)rr�rrrr{.s  zDatagramRequestHandler.setupcCs|jj|jjƒ|jƒdS)N)r0Zsendtor†Úgetvaluer>)rrrrr}4szDatagramRequestHandler.finishN)rMrNrOr{r}rrrrr *s)$Ú __version__r0r%raÚerrnorFrÚ ImportErrorZdummy_threadingr‘rr3rÚ__all__ÚhasattrÚextendrr#ZSelectSelectorrrrrr rrrrrrrrr r r…r rrrrÚ{sZ      n~ X.  .-