mò "á¸Ec@sÒdZdkZdkZdkZdkZdkZdkZdklZdk l Z dk l Z dk lZdklZdeid„Zdfd „ƒYZd fd „ƒYZd eifd „ƒYZdS(sc Zope clock server. Generate a faux HTTP request on a regular basis by coopting the asyncore API. N(s http_request(sunquote(shandle(s make_response(s HTTPRequestcCs&|djo |ƒ}n|||S(N(twhentNonetttperiod(RRR((t2/data/zmath/zope/lib/python/ZServer/ClockServer.pyt timeslices  t LogHelpercBstZd„Zd„ZRS(NcCs ||_dS(N(tloggertself(RR((Rt__init__$scKs|ii|d|ƒdS(Nt (RRtlogtiptmsg(RR R tkw((RR 's(t__name__t __module__R R (((RR#s t DummyChannelcBs2tZdgZdZd„Zd„Zd„ZRS(Ns 127.0.0.1icCs ||_dS(N(tserverR(RR((RR /scCsdS(N((R((Rtpush_with_producer2scCsdS(N((R((Rtclose_when_done5s(RRtaddrtclosedR RR(((RR*s    t ClockServercBs¡tZeddddddddd d d d d dddƒZdZddddddd„Zd„Zd„Zd„Z d„Z d„Z d„Z d„Z RS(NtREQUEST_METHODtGETt SERVER_PORTtClockt SERVER_NAMEsZope Clock ServertSERVER_SOFTWAREtZopetSERVER_PROTOCOLsHTTP/1.0t SCRIPT_NAMEttGATEWAY_INTERFACEsCGI/1.1t REMOTE_ADDRt0s Zope Clocki<c Cs<||_||_t|ƒ|_g}|_|idƒ|idƒ|pt i ƒ}n|id|ƒt } |o;|o4d||fidƒ} |id| ƒt} ntii|ƒ|it it iƒt|ƒ|_|id|| o|pd|ifƒ|djo t}n||_dS( Ns$User-Agent: Zope Clock Server ClientsAccept: text/html,text/plainsHost: %ss%s:%stbase64sAuthorization: Basic %ss4Clock server for "%s" started (user: %s, period: %s)t Anonymous(RRtmethodRt last_sliceththeaderstappendthosttsockett gethostnametFalsetauthtusertpasswordtencodetencodedtTruetasyncoret dispatcherR t create_sockettAF_INETt SOCK_STREAMRRtlog_infothandlerRthandletzhandler( RR'RR1R2R,RR<R)R0R4((RR Fs*      +  cCs†tiƒ}dd|idf}tt|ƒ|d|id|iƒ}|i |ƒ}t ||ƒ}t |||ƒ}|||fS(Ns %s %s HTTP/%sRs1.0(tStringIOtoutRR'ts_reqt http_requestRR*treqtget_envtenvt make_responsetrespt HTTPRequesttzreq(RRIRCRERARGR@((Rtget_requests_and_responsecs c Csm|iiƒ}|iƒ\} }}}|o| |} nx'| o| ddjo| d} q?Wd| jot | ƒ} n|o|d}nd| |dR/(RRhRIRCRG((Rtreadableˆs  cCstS(N(R5(R((Rt handle_read’scCs|iddƒtS(Nsunexpected write eventtwarning(RR;R5(R((Rt handle_write•scCstS(N(R/(R((Rtwritable™scCsBtiƒ\\}}}}}}|i d|||fdƒdS(NsProblem in Clock (%s:%s %s)terror( R6tcompact_tracebacktfiletfuntlineRtvttbinfoRR;(RRtRRpRsRqRr((Rt handle_errorœs!(RRtdictRSt SERVER_IDENTRR RJRDRiRjRlRmRu(((RR8s"      (t__doc__R[R^R-R`R?R6tZServer.medusa.http_serverRBtZServer.medusa.default_handlerRZtZServer.PubCoreR=tZServer.HTTPResponseRFtZPublisher.HTTPRequestRHRRRRR7R(RZRHRBR6R[R?RFRRR`R=RRR^R-((Rt?s