o ?Ogj@s dZddlZddlZddlZddlZddlZddlmZddlm ZgdZ e edr3e gde edr?e gd e ed rHej ZnejZGd d d ZGd ddeZGdddeZe edrnGdddZGdddeZGdddZGdddZe edrGdddeeZGdddeeZGdddeeZGdd d eeZe edrGd!d"d"eZGd#d$d$eZGd%d&d&eeZGd'd(d(eeZGd)d*d*Z Gd+d,d,e Z!Gd-d.d.eZ"Gd/d0d0e Z#dS)1z0.4N)BufferedIOBase) monotonic) BaseServer TCPServer UDPServerThreadingUDPServerThreadingTCPServerBaseRequestHandlerStreamRequestHandlerDatagramRequestHandlerThreadingMixInfork)ForkingUDPServerForkingTCPServer ForkingMixInAF_UNIX)UnixStreamServerUnixDatagramServerThreadingUnixStreamServerThreadingUnixDatagramServer PollSelectorc@seZdZ dZddZddZd%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)selfrrr3/opt/alt/python310/lib64/python3.10/socketserver.py__init__s   zBaseServer.__init__cC dSNrrrrrserver_activatezBaseServer.server_activate?cCs |jzIt(}||tj|js+||}|jrn |r$|| |jrWdn1s5wYWd|_|j dSWd|_|j dSd|_|j wr) rclear_ServerSelectorregister selectors EVENT_READrselect_handle_request_noblockservice_actionsset)rZ poll_intervalselectorreadyrrr serve_forevers,     zBaseServer.serve_forevercCs d|_|jdSNT)rrwaitr#rrrshutdownszBaseServer.shutdowncCr!r"rr#rrrr.r%zBaseServer.service_actionscCs |j}|dur|j}n |jdurt||j}|dur"t|}t4}||tj | |}|r@| WdS|durX|t}|dkrX| WdSq.1s\wYdS)NTr) socketZ gettimeouttimeoutmintimer(r)r*r+r,r-handle_timeout)rr7Zdeadliner0r1rrrhandle_requests,      zBaseServer.handle_requestcCs z|\}}Wn tyYdSw|||rAz |||WdSty8|||||YdS||||dSr") get_requestOSErrorverify_requestprocess_request Exception handle_errorshutdown_requestrrequestclient_addressrrrr-/s      z"BaseServer._handle_request_noblockcCr!r"rr#rrrr:FszBaseServer.handle_timeoutcCs dSr3rrCrrrr>Mr%zBaseServer.verify_requestcCs |||||dSr")finish_requestrBrCrrrr?Us zBaseServer.process_requestcCr!r"rr#rrr server_close^r%zBaseServer.server_closecCs ||||dSr")rrCrrrrFfszBaseServer.finish_requestcCs ||dSr" close_requestrrDrrrrBjszBaseServer.shutdown_requestcCr!r"rrJrrrrInszBaseServer.close_requestcCsB tdtjdtd|tjdddl}|tdtjddS)Nz(----------------------------------------)filez4Exception occurred during processing of request fromr)printsysstderr traceback print_exc)rrDrErOrrrrArszBaseServer.handle_errorcCs|Sr"rr#rrr __enter__zBaseServer.__enter__cGs |dSr")rG)rargsrrr__exit__s zBaseServer.__exit__)r&)__name__ __module__ __qualname__r7r r$r2r5r.r;r-r:r>r?rGrFrBrIrArQrTrrrrrs(+    rc@sdeZdZ ejZejZdZdZ dddZ ddZ dd Z d d Z d d ZddZddZddZdS)rFTcCsR t|||t|j|j|_|r'z ||WdS|dSr")rr r6address_family socket_type server_bindr$rG)rrrZbind_and_activaterrrr szTCPServer.__init__cCs: |jr|jtjtjd|j|j|j|_dS)N)allow_reuse_addressr6 setsockoptZ SOL_SOCKETZ SO_REUSEADDRZbindrZ getsocknamer#rrrr[s zTCPServer.server_bindcCs |j|jdSr")r6Zlistenrequest_queue_sizer#rrrr$szTCPServer.server_activatecCs |jdSr")r6closer#rrrrGszTCPServer.server_closecC |jSr")r6filenor#rrrrb zTCPServer.filenocCrar")r6Zacceptr#rrrr<rczTCPServer.get_requestcCs4 z|tjWn tyYnw||dSr")r5r6ZSHUT_WRr=rIrJrrrrBs zTCPServer.shutdown_requestcCs |dSr")r`rJrrrrIs zTCPServer.close_requestN)T)rUrVrWr6ZAF_INETrYZ SOCK_STREAMrZr_r]r r[r$rGrbr<rBrIrrrrrs-    rc@s<eZdZ dZejZdZddZddZ ddZ d d Z d S) rFi cCs |j|j\}}||jf|fSr")r6Zrecvfrommax_packet_size)rdataZ client_addrrrrr<szUDPServer.get_requestcCdSr"rr#rrrr$zUDPServer.server_activatecCs||dSr"rHrJrrrrBszUDPServer.shutdown_requestcCrfr"rrJrrrrIrgzUDPServer.close_requestN) rUrVrWr]r6Z SOCK_DGRAMrZrdr<r$rBrIrrrrrs rcsTeZdZ dZdZdZdZddddZd d Zd d Z d dZ fddZ Z S)ri,N(TFblockingc Cs |jdurdSt|j|jkr?ztdd\}}|j|Wnty.|jYn ty6Yn wt|j|jks|j D]0}z|rKdntj }t||\}}|j|WqDtyl|j|YqDtytYqDwdS)Nr) active_childrenlen max_childrenoswaitpiddiscardChildProcessErrorr'r=copyWNOHANG)rrjpid_flagsrrrcollect_children(s0      zForkingMixIn.collect_childrencC |dSr"rxr#rrrr:K zForkingMixIn.handle_timeoutcCryr"rzr#rrrr.Rr{zForkingMixIn.service_actionscCs t}|r|jdurt|_|j|||dSd}z/z |||d}Wnty9|||YnwWz | |Wt |dSt |wz | |Wt |wt |w)Nr\r) ror rlr/addrIrFr@rArB_exit)rrDrEruZstatusrrrr?Ys,       zForkingMixIn.process_requestcst|j|jddS)Nri)superrGrxblock_on_closer# __class__rrrGrs zForkingMixIn.server_close) rUrVrWr7rlrnrrxr:r.r?rG __classcell__rrrrrs#rcs6eZdZ fddZddZddZddZZS) _Threadscs"||jr dSt|dSr")reapdaemonr~appendrthreadrrrr{sz_Threads.appendcCsg|dd|dd<}|Sr"r)rresultrrrpop_allsz_Threads.pop_allcCs|D]}|qdSr")rjoinrrrrrs  z _Threads.joincCsdd|D|dd<dS)Ncss|] }|r|VqdSr")Zis_alive).0rrrr sz _Threads.reap..rr#rrrrz _Threads.reap)rUrVrWrrrrrrrrrrws  rc@eZdZ ddZddZdS) _NoThreadscCrfr"rrrrrrrRz_NoThreads.appendcCrfr"rr#rrrrrRz_NoThreads.joinN)rUrVrWrrrrrrrs rcs<eZdZ dZdZeZddZddZfddZ Z S) r FTc Cs` z(z|||Wnty|||Yn wW||dSW||dS||wr")rFr@rArBrCrrrprocess_request_threads z%ThreadingMixIn.process_request_threadcCsN |jr t|dttj|j||fd}|j|_|j || dS)N_threads)targetrS) rvars setdefaultrrZThreadrdaemon_threadsrrrstart)rrDrEtrrrr?s  zThreadingMixIn.process_requestcst|jdSr")r~rGrrr#rrrrGs zThreadingMixIn.server_close) rUrVrWrrrrrr?rGrrrrrr s  r c@ eZdZdS)rNrUrVrWrrrrr rc@r)rNrrrrrrrrc@r)rNrrrrrrrrc@r)rNrrrrrrrrc@eZdZejZdS)rNrUrVrWr6rrYrrrrr rc@r)rNrrrrrrrrc@r)rNrrrrrrrrc@r)rNrrrrrrrrc@.eZdZ ddZddZddZddZd S) r cCs<||_||_||_|z |W|dS|wr")rDrEserversetuphandlefinish)rrDrErrrrr s zBaseRequestHandler.__init__cCrfr"rr#rrrrrRzBaseRequestHandler.setupcCrfr"rr#rrrrrRzBaseRequestHandler.handlecCrfr"rr#rrrrrRzBaseRequestHandler.finishN)rUrVrWr rrrrrrrr s   r c@s.eZdZ dZdZdZdZddZddZdS) r rkrNFcCs||j|_|jdur|j|j|jr|jtjtjd|j d|j |_ |j dkr3t |j|_dS|j d|j |_dS)NTrbrwb)rDZ connectionr7Z settimeoutdisable_nagle_algorithmr^r6Z IPPROTO_TCPZ TCP_NODELAYZmakefilerbufsizerfilewbufsize _SocketWriterwfiler#rrrrs   zStreamRequestHandler.setupcCsD|jjsz|jWn tjyYnw|j|jdSr")rclosedflushr6errorr`rr#rrrr#s zStreamRequestHandler.finish) rUrVrWrrr7rrrrrrrr s  r c@r) rcCs ||_dSr")_sock)rZsockrrrr 3 z_SocketWriter.__init__cCsdSr3rr#rrrwritable6rRz_SocketWriter.writablecCs>|j|t| }|jWdS1swYdSr")rZsendall memoryviewnbytes)rbZviewrrrwrite9s  $z_SocketWriter.writecCs |jSr")rrbr#rrrrb>rz_SocketWriter.filenoN)rUrVrWr rrrbrrrrr.s  rc@r)r cCs2ddlm}|j\|_|_||j|_||_dS)Nr)BytesIO)iorrDZpacketr6rr)rrrrrrEs   zDatagramRequestHandler.setupcCs|j|j|jdSr")r6ZsendtorgetvaluerEr#rrrrKrzDatagramRequestHandler.finishN)rUrVrWrrrrrrr As r )$ __version__r6r*rorMrrrr9r__all__hasattrextendrr(ZSelectSelectorrrrrlistrrr rrrrrrrrr r rr rrrrsPz     n~ X ( .-