U ,aj @sdZddlZddlZddlZddlZddlZddlmZddlm Zddddd d d d d g Z e edrte dddge edre ddddge edrej ZnejZGdddZGdddeZGdddeZe edrGdddZGdddeZGdddZGd d d Ze edrJGd!ddeeZGd"ddeeZGd#ddeeZGd$d d eeZe edrGd%ddeZGd&ddeZGd'ddeeZGd(ddeeZGd)d d Z Gd*d d e Z!Gd+d,d,eZ"Gd-d d e Z#dS).z0.4N)BufferedIOBase) monotonic BaseServer TCPServer UDPServerThreadingUDPServerThreadingTCPServerBaseRequestHandlerStreamRequestHandlerDatagramRequestHandlerThreadingMixInforkForkingUDPServerForkingTCPServer ForkingMixInAF_UNIXUnixStreamServerUnixDatagramServerThreadingUnixStreamServerThreadingUnixDatagramServer PollSelectorc@seZdZdZddZddZd%ddZd d Zd d Zd dZ ddZ ddZ ddZ ddZ ddZddZddZddZdd Zd!d"Zd#d$ZdS)&rNcCs ||_||_t|_d|_dSNF)server_addressRequestHandlerClass threadingZEvent_BaseServer__is_shut_down_BaseServer__shutdown_request)selfrrr1/opt/alt/python38/lib64/python3.8/socketserver.py__init__s zBaseServer.__init__cCsdSNrrrrrserver_activateszBaseServer.server_activate?c Cst|jzRtB}||tj|jsP||}|jr:qP|rF| | q"W5QRXW5d|_|jXdSr) rclearrset_ServerSelectorregister selectors EVENT_READselect_handle_request_noblockservice_actions)rZ poll_intervalselectorreadyrrr serve_forevers  zBaseServer.serve_forevercCsd|_|jdSNT)rrwaitr"rrrshutdownszBaseServer.shutdowncCsdSr!rr"rrrr-szBaseServer.service_actionsc Cs|j}|dkr|j}n|jdk r0t||j}|dk rBt|}tf}||tj| |}|rz| W5QRS|dk rX|t}|dkrX| W5QRSqXW5QRXdS)Nr) socketZ gettimeouttimeoutmintimer'r(r)r*r+r,handle_timeout)rr5Zdeadliner.r/rrrhandle_requests       zBaseServer.handle_requestcCsz|\}}Wntk r&YdSX|||rz|||Wqtk rn|||||Yq||YqXn ||dSr!) get_requestOSErrorverify_requestprocess_request Exception handle_errorshutdown_requestrrequestclient_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_requestrrBrrrr@jszBaseServer.shutdown_requestcCsdSr!rrHrrrrGnszBaseServer.close_requestcCs@tdtjdtd|tjdddl}|tdtjddS)Nz(----------------------------------------)filez4Exception happened during processing of request fromr)printsysstderr traceback print_exc)rrBrCrMrrrr?rszBaseServer.handle_errorcCs|Sr!rr"rrr __enter__szBaseServer.__enter__cGs |dSr!)rE)rargsrrr__exit__szBaseServer.__exit__)r$)__name__ __module__ __qualname__r5r r#r0r3r-r9r,r8r<r=rErDr@rGr?rOrQrrrrrs$-    c@sbeZdZejZejZdZdZ dddZ ddZ dd Z d d Z d d ZddZddZddZdS)rFTcCsTt|||t|j|j|_|rPz||Wn|YnXdSr!)rr r4address_family socket_type server_bindr#rE)rrrZbind_and_activaterrrr s zTCPServer.__init__cCs8|jr|jtjtjd|j|j|j|_dS)N)allow_reuse_addressr4 setsockoptZ SOL_SOCKETZ SO_REUSEADDRZbindrZ getsocknamer"rrrrXszTCPServer.server_bindcCs|j|jdSr!)r4Zlistenrequest_queue_sizer"rrrr#szTCPServer.server_activatecCs|jdSr!)r4closer"rrrrEszTCPServer.server_closecCs |jSr!)r4filenor"rrrr^szTCPServer.filenocCs |jSr!)r4Zacceptr"rrrr:szTCPServer.get_requestcCs4z|tjWntk r$YnX||dSr!)r3r4ZSHUT_WRr;rGrHrrrr@s zTCPServer.shutdown_requestcCs |dSr!)r]rHrrrrGszTCPServer.close_requestN)T)rRrSrTr4ZAF_INETrVZ SOCK_STREAMrWr\rZr rXr#rEr^r:r@rGrrrrrs/   c@s:eZdZdZejZdZddZddZ ddZ d d Z d S) rFi cCs |j|j\}}||jf|fSr!)r4Zrecvfrommax_packet_size)rdataZ client_addrrrrr:szUDPServer.get_requestcCsdSr!rr"rrrr#szUDPServer.server_activatecCs||dSr!rFrHrrrr@szUDPServer.shutdown_requestcCsdSr!rrHrrrrGszUDPServer.close_requestN) rRrSrTrZr4Z SOCK_DGRAMrWr_r:r#r@rGrrrrrscsReZdZdZdZdZdZddddZd d Zd d Z d dZ fddZ Z S)ri,N(TFblockingc Cs|jdkrdSt|j|jkrvz tdd\}}|j|Wqtk r\|jYqtk rrYqvYqXq|j D]f}z.|rdntj }t||\}}|j|Wqtk r|j|Yqtk rYqXqdS)Nr) active_childrenlen max_childrenoswaitpiddiscardChildProcessErrorr%r;copyWNOHANG)rrcpid_flagsrrrcollect_children(s&  zForkingMixIn.collect_childrencCs |dSr!rqr"rrrr8KszForkingMixIn.handle_timeoutcCs |dSr!rrr"rrrr-RszForkingMixIn.service_actionscCst}|r8|jdkrt|_|j|||dSd}z:z|||d}Wn t k rr| ||YnXW5z||W5t|XXdS)NrYr) rhr rer&addrG_exitr@rDr>r?)rrBrCrnZstatusrrrr=Ys     zForkingMixIn.process_requestcst|j|jddS)Nrb)superrErqblock_on_closer" __class__rrrErs zForkingMixIn.server_close) rRrSrTr5rergrvrqr8r-r=rE __classcell__rrrwrrs#cs4eZdZfddZddZddZddZZS) _Threadscs"||jrdSt|dSr!)reapdaemonruappendrthreadrwrrr}{sz_Threads.appendcCsg|dd|dd<}|Sr!r)rresultrrrpop_allsz_Threads.pop_allcCs|D] }|qdSr!)rjoinr~rrrrs z _Threads.joincCsdd|D|dd<dS)Ncss|]}|r|VqdSr!)Zis_alive).0rrrr sz _Threads.reap..rr"rrrr{sz _Threads.reap)rRrSrTr}rrr{ryrrrwrrzws rzc@seZdZddZddZdS) _NoThreadscCsdSr!rr~rrrr}sz_NoThreads.appendcCsdSr!rr"rrrrsz_NoThreads.joinN)rRrSrTr}rrrrrrsrcs:eZdZdZdZeZddZddZfddZ Z S) r FTc CsHz6z|||Wn tk r2|||YnXW5||XdSr!)r@rDr>r?rArrrprocess_request_threads z%ThreadingMixIn.process_request_threadcCsL|jrt|dttj|j||fd}|j|_|j || dS)N_threads)targetrP) rvvars setdefaultrzrZThreadrdaemon_threadsr|rr}start)rrBrCtrrrr=s zThreadingMixIn.process_requestcst|jdSr!)rurErrr"rwrrrEs zThreadingMixIn.server_close) rRrSrTrrvrrrr=rEryrrrwrr s   c@s eZdZdS)rNrRrSrTrrrrrsc@s eZdZdS)rNrrrrrrsc@s eZdZdS)rNrrrrrrsc@s eZdZdS)rNrrrrrrsc@seZdZejZdS)rNrRrSrTr4rrVrrrrrsc@seZdZejZdS)rNrrrrrrsc@s eZdZdS)rNrrrrrrsc@s eZdZdS)rNrrrrrrsc@s,eZdZddZddZddZddZd S) r cCs6||_||_||_|z |W5|XdSr!)rBrCserversetupfinishhandle)rrBrCrrrrr s zBaseRequestHandler.__init__cCsdSr!rr"rrrrszBaseRequestHandler.setupcCsdSr!rr"rrrrszBaseRequestHandler.handlecCsdSr!rr"rrrrszBaseRequestHandler.finishN)rRrSrTr rrrrrrrr s c@s,eZdZdZdZdZdZddZddZdS) r rdrNFcCsz|j|_|jdk r |j|j|jr:|jtjtjd|j d|j |_ |j dkrdt |j|_n|j d|j |_dS)NTrbrwb)rBZ connectionr5Z settimeoutdisable_nagle_algorithmr[r4Z IPPROTO_TCPZ TCP_NODELAYZmakefilerbufsizerfilewbufsize _SocketWriterwfiler"rrrrs   zStreamRequestHandler.setupcCsF|jjs.z|jWntjk r,YnX|j|jdSr!)rclosedflushr4errorr]rr"rrrr#s zStreamRequestHandler.finish) rRrSrTrrr5rrrrrrrr s   c@s,eZdZddZddZddZddZd S) rcCs ||_dSr!)_sock)rZsockrrrr 3sz_SocketWriter.__init__cCsdSr1rr"rrrwritable6sz_SocketWriter.writablec Cs2|j|t|}|jW5QRSQRXdSr!)rZsendall memoryviewnbytes)rbZviewrrrwrite9s  z_SocketWriter.writecCs |jSr!)rr^r"rrrr^>sz_SocketWriter.filenoN)rRrSrTr rrr^rrrrr.src@seZdZddZddZdS)r cCs2ddlm}|j\|_|_||j|_||_dS)Nr)BytesIO)iorrBZpacketr4rr)rrrrrrEs  zDatagramRequestHandler.setupcCs|j|j|jdSr!)r4ZsendtorgetvaluerCr"rrrrKszDatagramRequestHandler.finishN)rRrSrTrrrrrrr As)$ __version__r4r)rhrKrrrr7r__all__hasattrextendrr'ZSelectSelectorrrrrlistrzrr rrrrrrrrr r rr rrrr{s`     n~ X (  .-