grthtrhthjhtyjytjytkergtrhtrjytjerhrfh4:24 29/09/2026 й¼]Z`ã@sfdZddlZddlZddlZddlZyddlZWnek rfddlZYnXddlm Zdddddd d d d d ddg Z e edƒrÉe j ddddgƒe edƒräej Zn ejZGdd„dƒZGdd„deƒZGdd„deƒZGdd„dƒZGdd„dƒZGdd„deeƒZGdd„deeƒZGdd „d eeƒZGdd „d eeƒZe edƒr#Gdd„deƒZGd d„deƒZGd!d„deeƒZGd"d„deeƒZGd#d „d ƒZGd$d „d eƒZGd%d „d eƒZdS)&z0.4éN)Ú monotonicÚ BaseServerÚ TCPServerÚ UDPServerÚForkingUDPServerÚForkingTCPServerÚThreadingUDPServerÚThreadingTCPServerÚBaseRequestHandlerÚStreamRequestHandlerÚDatagramRequestHandlerÚThreadingMixInÚ ForkingMixInÚAF_UNIXÚUnixStreamServerÚUnixDatagramServerÚThreadingUnixStreamServerÚThreadingUnixDatagramServerÚ PollSelectorc@sÍeZdZdZdd„Zdd„Zddd„Zd d „Zd d „Zd d„Z dd„Z dd„Z dd„Z dd„Z dd„Zdd„Zdd„Zdd„Zdd „ZdS)!rNcCs.||_||_tjƒ|_d|_dS)NF)Úserver_addressÚRequestHandlerClassÚ threadingÚEventÚ_BaseServer__is_shut_downÚ_BaseServer__shutdown_request)Úselfrr©rú1/opt/alt/python35/lib64/python3.5/socketserver.pyÚ__init__Ès  zBaseServer.__init__cCsdS)Nr)rrrrÚserver_activateÏszBaseServer.server_activategà?cCsŽ|jjƒzctƒ�S}|j|tjƒx6|jsg|j|ƒ}|rZ|jƒ|j ƒq2WWdQRXWdd|_|jj ƒXdS)NF) 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|_|jjƒdS)NT)rrÚwait)rrrrÚshutdownñs zBaseServer.shutdowncCsdS)Nr)rrrrr'ûszBaseServer.service_actionsc Csà|jjƒ}|dkr'|j}n!|jdk rHt||jƒ}|dk ratƒ|}tƒ�o}|j|tjƒxR|j |ƒ}|r¢|j ƒS|dk rƒ|tƒ}|dkrƒ|j ƒSqƒWWdQRXdS)Nr) ÚsocketÚ gettimeoutÚtimeoutÚminÚtimer!r"r#r$r%r&Úhandle_timeout)rr0Údeadliner)r*rrrÚhandle_requests"         zBaseServer.handle_requestcCs‘y|jƒ\}}Wntk r.dSYnX|j||ƒr€y|j||ƒWq�|j||ƒ|j|ƒYq�Xn |j|ƒdS)N)Ú get_requestÚOSErrorÚverify_requestÚprocess_requestÚ handle_errorÚshutdown_request)rÚrequestÚclient_addressrrrr&,s  z"BaseServer._handle_request_noblockcCsdS)Nr)rrrrr3@szBaseServer.handle_timeoutcCsdS)NTr)rr<r=rrrr8GszBaseServer.verify_requestcCs!|j||ƒ|j|ƒdS)N)Úfinish_requestr;)rr<r=rrrr9OszBaseServer.process_requestcCsdS)Nr)rrrrÚ server_closeXszBaseServer.server_closecCs|j|||ƒdS)N)r)rr<r=rrrr>`szBaseServer.finish_requestcCs|j|ƒdS)N)Ú close_request)rr<rrrr;dszBaseServer.shutdown_requestcCsdS)Nr)rr<rrrr@hszBaseServer.close_requestcCsPtddƒtdddƒt|ƒddl}|jƒtddƒdS)Nú-é(z4Exception happened during processing of request fromÚendú r)ÚprintÚ tracebackÚ print_exc)rr<r=rFrrrr:ls    zBaseServer.handle_error)Ú__name__Ú __module__Ú __qualname__r0rrr+r-r'r5r&r3r8r9r?r>r;r@r:rrrrr™s -           c@s‘eZdZejZejZdZdZ ddd„Z dd„Z dd „Z d d „Z d d „Zdd„Zdd„Zdd„ZdS)réFTc Cshtj|||ƒtj|j|jƒ|_|rdy|jƒ|jƒWn|jƒ‚YnXdS)N)rrr.Úaddress_familyÚ socket_typeÚ server_bindrr?)rrrZbind_and_activaterrrr±s   zTCPServer.__init__cCsN|jr%|jjtjtjdƒ|jj|jƒ|jjƒ|_dS)Né)Úallow_reuse_addressr.Ú setsockoptÚ SOL_SOCKETÚ SO_REUSEADDRÚbindrÚ getsockname)rrrrrN¾s zTCPServer.server_bindcCs|jj|jƒdS)N)r.ÚlistenÚrequest_queue_size)rrrrrÉszTCPServer.server_activatecCs|jjƒdS)N)r.Úclose)rrrrr?ÑszTCPServer.server_closecCs |jjƒS)N)r.Úfileno)rrrrrYÙszTCPServer.filenocCs |jjƒS)N)r.Úaccept)rrrrr6ászTCPServer.get_requestc Cs:y|jtjƒWntk r(YnX|j|ƒdS)N)r-r.ÚSHUT_WRr7r@)rr<rrrr;és  zTCPServer.shutdown_requestcCs|jƒdS)N)rX)rr<rrrr@ószTCPServer.close_requestN)rHrIrJr.ÚAF_INETrLÚ SOCK_STREAMrMrWrPrrNrr?rYr6r;r@rrrrrzs /       c@sUeZdZdZejZdZdd„Zdd„Z dd„Z d d „Z d S) rFi cCs.|jj|jƒ\}}||jf|fS)N)r.ÚrecvfromÚmax_packet_size)rÚdataZ client_addrrrrr6szUDPServer.get_requestcCsdS)Nr)rrrrrszUDPServer.server_activatecCs|j|ƒdS)N)r@)rr<rrrr; szUDPServer.shutdown_requestcCsdS)Nr)rr<rrrr@szUDPServer.close_requestN) rHrIrJrPr.Ú SOCK_DGRAMrMr_r6rr;r@rrrrrøs     c@sReZdZdZdZdZdd„Zdd„Zdd „Zd d „Z dS) ri,NrBc Cs|jdkrdSx|t|jƒ|jkr‘y,tjddƒ\}}|jj|ƒWqtk r{|jjƒYqtk r�PYqXqWx||jj ƒD]k}y/tj|tj ƒ\}}|jj|ƒWq¢tk rû|jj|ƒYq¢tk r Yq¢Xq¢WdS)NrOréÿÿÿÿ) Úactive_childrenÚlenÚ max_childrenÚosÚwaitpidÚdiscardÚChildProcessErrorr r7ÚcopyÚWNOHANG)rÚpidÚ_rrrÚcollect_childrens$     zForkingMixIn.collect_childrencCs|jƒdS)N)rn)rrrrr3<szForkingMixIn.handle_timeoutcCs|jƒdS)N)rn)rrrrr'CszForkingMixIn.service_actionscCs½tjƒ}|rN|jdkr-tƒ|_|jj|ƒ|j|ƒdSy.|j||ƒ|j|ƒtjdƒWn:z!|j ||ƒ|j|ƒWdtjdƒXYnXdS)NrrO) rfÚforkrcr(Úaddr@r>r;Ú_exitr:)rr<r=rlrrrr9Js     zForkingMixIn.process_request) rHrIrJr0rcrernr3r'r9rrrrrs  "  c@s.eZdZdZdd„Zdd„ZdS)r Fc CsMy!|j||ƒ|j|ƒWn%|j||ƒ|j|ƒYnXdS)N)r>r;r:)rr<r=rrrÚprocess_request_threadjs z%ThreadingMixIn.process_request_threadcCs;tjd|jd||fƒ}|j|_|jƒdS)NÚtargetÚargs)rÚThreadrrÚdaemon_threadsÚdaemonÚstart)rr<r=Útrrrr9ws zThreadingMixIn.process_requestN)rHrIrJrvrrr9rrrrr cs  c@seZdZdS)rN)rHrIrJrrrrrs c@seZdZdS)rN)rHrIrJrrrrr€s c@seZdZdS)rN)rHrIrJrrrrr‚s c@seZdZdS)r N)rHrIrJrrrrr ƒs c@seZdZejZdS)rN)rHrIrJr.rrLrrrrr‡s c@seZdZejZdS)rN)rHrIrJr.rrLrrrrrŠs c@seZdZdS)rN)rHrIrJrrrrr�s c@seZdZdS)rN)rHrIrJrrrrr�s c@s@eZdZdd„Zdd„Zdd„Zdd„Zd S) r c CsE||_||_||_|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)rHrIrJrr{r|r}rrrrr ‘s   c@s@eZdZd ZdZdZdZdd„Zdd„ZdS) r rOrNFcCs�|j|_|jdk r.|jj|jƒ|jrS|jjtjtjdƒ|jj d|j ƒ|_ |jj d|j ƒ|_ dS)NTÚrbÚwb)r<Ú connectionr0Ú settimeoutÚdisable_nagle_algorithmrQr.Ú IPPROTO_TCPÚ TCP_NODELAYÚmakefileÚrbufsizeÚrfileÚwbufsizeÚwfile)rrrrr{Ôs   zStreamRequestHandler.setupc CsS|jjs5y|jjƒWntjk r4YnX|jjƒ|jjƒdS)N)r‰ÚclosedÚflushr.ÚerrorrXr‡)rrrrr}Þs  zStreamRequestHandler.finishrb) rHrIrJr†rˆr0r‚r{r}rrrrr ¿s  c@s(eZdZdd„Zdd„ZdS)r cCsGddlm}|j\|_|_||jƒ|_|ƒ|_dS)Nr)ÚBytesIO)Úior�r<Zpacketr.r‡r‰)rr�rrrr{îszDatagramRequestHandler.setupcCs#|jj|jjƒ|jƒdS)N)r.Úsendtor‰Úgetvaluer=)rrrrr}ôszDatagramRequestHandler.finishN)rHrIrJr{r}rrrrr ês  ) Ú __version__r.r#rfÚerrnorÚ ImportErrorÚdummy_threadingr2rÚ__all__ÚhasattrÚextendrr!ÚSelectSelectorrrrrr rrrr rrrrr r r rrrrÚ{sJ           á~Q.+