mò Mã¸Ec@sdZdkZdkZdkZdkZdkZdkZdkZdkZdk l Z ei dƒZ e eiƒƒZeied„Zd„Zd„Zdfd„ƒYZd e efd „ƒYZd fd „ƒYZdad „Zd„Zdd„Zedjo eƒndS(sStart the ZEO storage server. Usage: %s [-C URL] [-a ADDRESS] [-f FILENAME] [-h] Options: -C/--configuration URL -- configuration file or URL -a/--address ADDRESS -- server address of the form PORT, HOST:PORT, or PATH (a PATH must contain at least one "/") -f/--filename FILENAME -- filename for FileStorage -t/--timeout TIMEOUT -- transaction timeout in seconds (default no timeout) -h/--help -- print this usage message and exit -m/--monitor ADDRESS -- address of monitor server ([HOST:]PORT or PATH) --pid-file PATH -- relative path to output file containing this process's pid; default $(INSTANCE_HOME)/var/ZEO.pid but only if envar INSTANCE_HOME is defined Unless -C is specified, -a and -f are required. N(s ZDOptionss ZEO.runzeocCs*dt|f}ti||d|ƒdS(s#Internal: generic logging function.s(%s) %stexc_infoN(t_pidtmsgtmessagetloggertlogtlevelR(RRRR((t)/data/zmath/zope/lib/python/ZEO/runzeo.pyR2scCs"tii|ƒ}|i|ifS(N(tZConfigt datatypestSocketBindingAddresstargtobjtfamilytaddress(R R ((Rtparse_binding_address7scCsdk}|iƒdS(N(tasyncoret close_all(R((Rtwindows_shutdown_handler<s tZEOOptionsMixincBs2tZdZd„Zd„Zd„Zd„ZRS(NcCst|ƒ\|_|_dS(N(RR tselfR R(RR ((Rthandle_addressEscCst|ƒ\|_|_dS(N(RR Rtmonitor_familytmonitor_address(RR ((Rthandle_monitor_addressHscCsydkl}dfd„ƒY}|ip g|_ntdt|iƒƒ}||||ƒƒ}|ii |ƒdS(N(s FileStoragetFSConfigcBstZd„Zd„ZRS(NcCs:||_||_d|_d|_d|_d|_dS(Ni( tnameRt_nametpathtcreatet read_onlytNonetstoptquota(RRR((Rt__init__Ns      cCs|iS(N(RR(R((RtgetSectionNameUs(t__name__t __module__R"R#(((RRMs i( t ZODB.configt FileStorageRRtstorageststrtlenRR tconftappend(RR RRR+R'((Rthandle_filenameKs   cCs!|idddd|iƒ|idddd|iƒ|iddƒ|iddd d ƒ|id d d dƒ|iddd dƒ|iddddtƒ|idddd|iƒ|iddddd dƒ|iddddƒ|id d!dd"ƒ|id#d$dd%ƒdS(&Nsa:saddress=sf:s filename=R szeo.address.familyRszeo.address.addresstrequireds)no server address specified; use -a or -CRs zeo.read_onlytdefaultitinvalidation_queue_sizeszeo.invalidation_queue_sizeidttransaction_timeoutszeo.transaction_timeoutst:stimeout=Rszeo.monitor_address.addresssm:smonitor=t auth_protocolszeo.authentication_protocolsauth-protocol=t auth_databaseszeo.authentication_databasesauth-database=t auth_realmszeo.authentication_realms auth-realm=tpid_fileszeo.pid_filenames pid-file=(RtaddRRR-tfloatR(R((Rtadd_zeo_options]s(             (R$R%RR(RRR-R8(((RRAs    t ZEOOptionscBs,tZdZeiieiƒZd„Z RS(NteventlogcCs1ti|ƒ|iƒ|iddddƒdS(NR(R.s#no storages specified; use -f or -C(t ZDOptionsR"RR8R6(R((RR"xs   ( R$R%tlogsectionnametosRtdirnametZEOt__file__t schemadirR"(((RR9sst ZEOServercBs³tZd„Zd„Zd„Zd„Zd„Zd„Zd„Zd„Z d „Z d „Z d „Z d „Z d „Zd„Zd„Zd„Zd„Zd„Zd„ZRS(NcCs ||_dS(N(toptionsR(RRC((RR"scCsz|iƒ|iƒ|iƒ|iƒz,|iƒ|iƒ|iƒ|iƒWd|i ƒ|iƒ|i ƒXdS(N( Rtsetup_default_loggingt check_sockett clear_sockett make_pidfilet open_storagest setup_signalst create_servert loop_forevertclose_storagestremove_pidfile(R((Rtmain„s         cCss|iidj odSntiƒ}|itiƒti ddƒ}ti ƒ}|i |ƒ|i|ƒdS(Ns5------ %(asctime)s %(levelname)s %(name)s %(message)ss%Y-%m-%dT%H:%M:%S(RRCt config_loggerRtloggingt getLoggertroottsetLeveltINFOt Formattertfmtt StreamHandlerthandlert setFormattert addHandler(RRXRRRV((RRD“s     cCsG|i|ii|iiƒo$|iidt|iiƒƒndS(Nsaddress %s already in use(Rt can_connectRCR Rtusagetrepr(R((RRE scCsUti|tiƒ}y|i|ƒWntij o dSnX|iƒdSdS(Nii(tsocketR t SOCK_STREAMtstconnectRterrortclose(RR RR`((RR[¥s  cCsTt|iitdƒƒo4yti|iiƒWqPtij oqPXndS(Nt(t isinstanceRRCRttypeR=tunlinkRb(R((RRF¯s cCsWh|_xG|iiD]9}td|i|iifƒ|iƒ|i|i