Ñò »ÏâIc @sdZddkZddkZddkZddkZddkZddkZddkZddkl Z l Z de i fd„ƒYZ de i fd„ƒYZdefd „ƒYZehd d 6ƒZd „Zd eifd„ƒYZedjoeieƒndS(s"Windows service. Requires pywin32.iÿÿÿÿN(twspbustpluginstConsoleCtrlHandlercBs2eZdZd„Zd„Zd„Zd„ZRS(s@A WSPBus plugin for handling Win32 console events (like Ctrl-C).cCs t|_tii||ƒdS(N(tFalsetis_setRt SimplePlugint__init__(tselftbus((s</usr/lib/python2.6/vendor-packages/cherrypy/process/win32.pyRs cCsŽ|io|iidddƒdSti|idƒ}|djo$|iidtiƒddƒn |iidddƒt|_dS(Ns'Handler for console events already set.tleveli(iis*Could not SetConsoleCtrlHandler (error %r)sSet handler for console events.(RRtlogtwin32apitSetConsoleCtrlHandlerthandlet GetLastErrortTrue(Rtresult((s</usr/lib/python2.6/vendor-packages/cherrypy/process/win32.pytstarts   cCs®|ip|iidddƒdSyti|idƒ}Wntj o d}nX|djo$|iidtiƒddƒn |iidddƒt|_dS(Ns'Handler for console events already off.R i(iis1Could not remove SetConsoleCtrlHandler (error %r)s#Removed handler for console events.( RRR R R R t ValueErrorRR(RR((s</usr/lib/python2.6/vendor-packages/cherrypy/process/win32.pytstop"s    cCsy|tititititifjoJ|iid|ƒy|iƒWnt j onX|ii ƒdSdS(s,Handle console control events (like Ctrl-C).s#Console event %s: shutting down busii( twin32cont CTRL_C_EVENTtCTRL_LOGOFF_EVENTtCTRL_BREAK_EVENTtCTRL_SHUTDOWN_EVENTtCTRL_CLOSE_EVENTRR RRtexit(Rtevent((s</usr/lib/python2.6/vendor-packages/cherrypy/process/win32.pyR 4s  (t__name__t __module__t__doc__RRRR (((s</usr/lib/python2.6/vendor-packages/cherrypy/process/win32.pyRs   tWin32BuscBsMeZdZd„Zd„Zd„Zd„ZeeeƒZdd„Z RS(s†A Web Site Process Bus implementation for Win32. Instead of time.sleep, this bus blocks using native win32event objects. cCsh|_tii|ƒdS(N(teventsRtBusR(R((s</usr/lib/python2.6/vendor-packages/cherrypy/process/win32.pyRMs cCsby|i|SWnLtj o@tidddd|itiƒfƒ}||i|<|SXdS(s@Return a win32event for the given state (creating it if needed).iuWSPBus %s Event (pid=%r)N(R tKeyErrort win32eventt CreateEventtNonetnametostgetpid(RtstateR((s</usr/lib/python2.6/vendor-packages/cherrypy/process/win32.pyt_get_state_eventQs cCs|iS(N(t_state(R((s</usr/lib/python2.6/vendor-packages/cherrypy/process/win32.pyt _get_state\scCs)||_|i|ƒ}ti|ƒdS(N(R+R*R#t PulseEvent(RtvalueR((s</usr/lib/python2.6/vendor-packages/cherrypy/process/win32.pyt _set_state^s gš™™™™™¹?cCs®t|ttfƒo^|i|joJtg}|D]}||i|ƒq4~ƒ}ti|dtiƒqªn7|i|jo&|i|ƒ}ti|tiƒndS(s²Wait for the given state(s), KeyboardInterrupt or SystemExit. Since this class uses native win32event objects, the interval argument is ignored. iN( t isinstancettupletlistR)R*R#tWaitForMultipleObjectstINFINITEtWaitForSingleObject(RR)tintervalt_[1]tsR R((s</usr/lib/python2.6/vendor-packages/cherrypy/process/win32.pytwaitds0( RRRRR*R,R/tpropertyR)R9(((s</usr/lib/python2.6/vendor-packages/cherrypy/process/win32.pyRGs   t _ControlCodescBseZdZd„ZRS(s1Control codes used to "signal" a service via ControlService. User-defined control codes are in the range 128-255. We generally use the standard Python value for the Linux signal and add 128. Example: >>> signal.SIGUSR1 10 control_codes['graceful'] = 128 + 10 cCsCx,|iƒD]\}}||jo|Sq Wtd|ƒ‚dS(s2For the given value, return its corresponding key.s'The given object could not be found: %rN(t iteritemsR(Rtobjtkeytval((s</usr/lib/python2.6/vendor-packages/cherrypy/process/win32.pytkey_fors    (RRRR@(((s</usr/lib/python2.6/vendor-packages/cherrypy/process/win32.pyR;vs iŠtgracefulcCsT|djoti|ƒn3|djoti|ƒnti|t|ƒdS(NRtrestart(twin32serviceutilt StopServicetRestartServicetControlServicet control_codes(tservicetcommand((s</usr/lib/python2.6/vendor-packages/cherrypy/process/win32.pyt signal_child‹s   t PyWebServicecBsMeZdZdZdZdZdZdZdZ d„Z d„Z d„Z RS(sPython Web Service.sPython Web ServicetpywebsvccCs.ddkl}|iiƒ|iiƒdS(Niÿÿÿÿ(tprocess(tcherrypyRMRRtblock(RRM((s</usr/lib/python2.6/vendor-packages/cherrypy/process/win32.pytSvcDoRun s cCs1ddkl}|itiƒ|iiƒdS(Niÿÿÿÿ(RM(RNRMtReportServiceStatust win32servicetSERVICE_STOP_PENDINGRR(RRM((s</usr/lib/python2.6/vendor-packages/cherrypy/process/win32.pytSvcStop¥scCstiiti|ƒƒdS(N(RMRtpublishRGR@(Rtcontrol((s</usr/lib/python2.6/vendor-packages/cherrypy/process/win32.pytSvcOtherªsN( RRRt _svc_name_t_svc_display_name_R%t _svc_deps_t _exe_name_t _exe_args_t_svc_description_RPRTRW(((s</usr/lib/python2.6/vendor-packages/cherrypy/process/win32.pyRK”s  t__main__(RR'tthreadR RR#RRRCtcherrypy.processRRRRR!RtdictR;RGRJtServiceFrameworkRKRtHandleCommandLine(((s</usr/lib/python2.6/vendor-packages/cherrypy/process/win32.pyts        9/