PNG  IHDR;IDATxܻn0K )(pA 7LeG{ §㻢|ذaÆ 6lذaÆ 6lذaÆ 6lom$^yذag5bÆ 6lذaÆ 6lذa{ 6lذaÆ `}HFkm,mӪôô! x|'ܢ˟;E:9&ᶒ}{v]n&6 h_tڠ͵-ҫZ;Z$.Pkž)!o>}leQfJTu іچ\X=8Rن4`Vwl>nG^is"ms$ui?wbs[m6K4O.4%/bC%t Mז -lG6mrz2s%9s@-k9=)kB5\+͂Zsٲ Rn~GRC wIcIn7jJhۛNCS|j08yiHKֶۛkɈ+;SzL/F*\Ԕ#"5m2[S=gnaPeғL lذaÆ 6l^ḵaÆ 6lذaÆ 6lذa; _ذaÆ 6lذaÆ 6lذaÆ RIENDB`  lYZ`@sfdZddlZddlZddlZddlZyddlZWnek rfddlZYnXddlm Zdddddd d d d d ddg Z e edre j ddddge edrej Zn ejZGdddZGdddeZGdddeZGdddZGdddZGdddeeZGdddeeZGdd d eeZGdd d eeZe edr#GdddeZGd ddeZGd!ddeeZGd"ddeeZGd#d d ZGd$d d eZGd%d d eZdS)&z0.4N) monotonic BaseServer TCPServer UDPServerForkingUDPServerForkingTCPServerThreadingUDPServerThreadingTCPServerBaseRequestHandlerStreamRequestHandlerDatagramRequestHandlerThreadingMixIn ForkingMixInAF_UNIXUnixStreamServerUnixDatagramServerThreadingUnixStreamServerThreadingUnixDatagramServer PollSelectorc@seZdZdZddZddZdddZd d Zd d Zd dZ ddZ ddZ ddZ ddZ ddZddZddZddZdd ZdS)!rNcCs.||_||_tj|_d|_dS)NF)server_addressRequestHandlerClass threadingEvent_BaseServer__is_shut_down_BaseServer__shutdown_request)selfrrr+/opt/python35/lib/python3.5/socketserver.py__init__s  zBaseServer.__init__cCsdS)Nr)rrrrserver_activateszBaseServer.server_activateg?cCs|jjzctS}|j|tjx6|jsg|j|}|rZ|j|j q2WWdQRXWdd|_|jj XdS)NF) rclear_ServerSelectorregister selectors EVENT_READrselect_handle_request_noblockservice_actionsset)rZ poll_intervalselectorreadyrrr serve_forevers     zBaseServer.serve_forevercCsd|_|jjdS)NT)rrwait)rrrrshutdowns zBaseServer.shutdowncCsdS)Nr)rrrrr'szBaseServer.service_actionsc Cs|jj}|dkr'|j}n!|jdk rHt||j}|dk rat|}to}|j|tjxR|j |}|r|j S|dk r|t}|dkr|j SqWWdQRXdS)Nr) socket gettimeouttimeoutmintimer!r"r#r$r%r&handle_timeout)rr0deadliner)r*rrrhandle_requests"         zBaseServer.handle_requestcCsy|j\}}Wntk r.dSYnX|j||ry|j||Wq|j|||j|YqXn |j|dS)N) get_requestOSErrorverify_requestprocess_request handle_errorshutdown_request)rrequestclient_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_requestcCsPtddtdddt|ddl}|jtdddS)N-(z4Exception happened during processing of request fromend r)print traceback print_exc)rr<r=rFrrrr:ls    zBaseServer.handle_error)__name__ __module__ __qualname__r0rrr+r-r'r5r&r3r8r9r?r>r;r@r:rrrrrs -           c@seZdZejZejZdZdZ dddZ ddZ dd Z d d Z d d ZddZddZddZdS)rFTc Cshtj|||tj|j|j|_|rdy|j|jWn|jYnXdS)N)rrr.address_family socket_type server_bindrr?)rrrZbind_and_activaterrrrs   zTCPServer.__init__cCsN|jr%|jjtjtjd|jj|j|jj|_dS)N)allow_reuse_addressr. setsockopt SOL_SOCKET SO_REUSEADDRbindr getsockname)rrrrrNs zTCPServer.server_bindcCs|jj|jdS)N)r.listenrequest_queue_size)rrrrrszTCPServer.server_activatecCs|jjdS)N)r.close)rrrrr?szTCPServer.server_closecCs |jjS)N)r.fileno)rrrrrYszTCPServer.filenocCs |jjS)N)r.accept)rrrrr6szTCPServer.get_requestc Cs:y|jtjWntk r(YnX|j|dS)N)r-r.SHUT_WRr7r@)rr<rrrr;s  zTCPServer.shutdown_requestcCs|jdS)N)rX)rr<rrrr@szTCPServer.close_requestN)rHrIrJr.AF_INETrL SOCK_STREAMrMrWrPrrNrr?rYr6r;r@rrrrrzs /       c@sUeZdZdZejZdZddZddZ ddZ d d Z d S) rFi cCs.|jj|j\}}||jf|fS)N)r.recvfrommax_packet_size)rdataZ 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@rrrrrs     c@sReZdZdZdZdZddZddZdd Zd d Z dS) ri,NrBc Cs|jdkrdSx|t|j|jkry,tjdd\}}|jj|Wqtk r{|jjYqtk rPYqXqWx||jj D]k}y/tj|tj \}}|jj|Wqtk r|jj|Yqtk r YqXqWdS)NrOr) active_childrenlen max_childrenoswaitpiddiscardChildProcessErrorr r7copyWNOHANG)rpid_rrrcollect_childrens$     zForkingMixIn.collect_childrencCs|jdS)N)rn)rrrrr3<szForkingMixIn.handle_timeoutcCs|jdS)N)rn)rrrrr'CszForkingMixIn.service_actionscCstj}|rN|jdkr-t|_|jj||j|dSy.|j|||j|tjdWn:z!|j |||j|WdtjdXYnXdS)NrrO) rfforkrcr(addr@r>r;_exitr:)rr<r=rlrrrr9Js     zForkingMixIn.process_request) rHrIrJr0rcrernr3r'r9rrrrrs  "  c@s.eZdZdZddZddZdS)r Fc CsMy!|j|||j|Wn%|j|||j|YnXdS)N)r>r;r:)rr<r=rrrprocess_request_threadjs z%ThreadingMixIn.process_request_threadcCs;tjd|jd||f}|j|_|jdS)Ntargetargs)rThreadrrdaemon_threadsdaemonstart)rr<r=trrrr9ws zThreadingMixIn.process_requestN)rHrIrJrvrrr9rrrrr cs  c@seZdZdS)rN)rHrIrJrrrrrs c@seZdZdS)rN)rHrIrJrrrrrs c@seZdZdS)rN)rHrIrJrrrrrs c@seZdZdS)r N)rHrIrJrrrrr s c@seZdZejZdS)rN)rHrIrJr.rrLrrrrrs c@seZdZejZdS)rN)rHrIrJr.rrLrrrrrs c@seZdZdS)rN)rHrIrJrrrrrs c@seZdZdS)rN)rHrIrJrrrrrs c@s@eZdZddZddZddZddZd S) r c CsE||_||_||_|jz|jWd|jXdS)N)r<r=serversetuphandlefinish)rr<r=rzrrrrs    zBaseRequestHandler.__init__cCsdS)Nr)rrrrr{szBaseRequestHandler.setupcCsdS)Nr)rrrrr|szBaseRequestHandler.handlecCsdS)Nr)rrrrr}szBaseRequestHandler.finishN)rHrIrJrr{r|r}rrrrr s   c@s@eZdZd ZdZdZdZddZddZdS) r rOrNFcCs|j|_|jdk r.|jj|j|jrS|jjtjtjd|jj d|j |_ |jj d|j |_ dS)NTrbwb)r< connectionr0 settimeoutdisable_nagle_algorithmrQr. IPPROTO_TCP TCP_NODELAYmakefilerbufsizerfilewbufsizewfile)rrrrr{s   zStreamRequestHandler.setupc CsS|jjs5y|jjWntjk r4YnX|jj|jjdS)N)rclosedflushr.errorrXr)rrrrr}s  zStreamRequestHandler.finishrb) rHrIrJrrr0rr{r}rrrrr s  c@s(eZdZddZddZdS)r cCsGddlm}|j\|_|_||j|_||_dS)Nr)BytesIO)iorr<Zpacketr.rr)rrrrrr{szDatagramRequestHandler.setupcCs#|jj|jj|jdS)N)r.sendtorgetvaluer=)rrrrr}szDatagramRequestHandler.finishN)rHrIrJr{r}rrrrr s  ) __version__r.r#rferrnor ImportErrordummy_threadingr2r__all__hasattrextendrr!SelectSelectorrrrrr rrrr rrrrr r r rrrr{sJ           ~Q.+