mò "á¸Ec@sŽdZdkZdkZdfd„ƒYZdfd„ƒYZdfd„ƒYZdfd „ƒYZd fd „ƒYZd fd „ƒYZdS(sF ZServer pipe utils. These producers basically function as callbacks. NtShutdownProducercBstZdZd„ZRS(sshuts down medusacCstiƒdS(N(tasyncoret close_all(tself((t0/data/zmath/zope/lib/python/ZServer/Producers.pytmores(t__name__t __module__t__doc__R(((RRs tLoggingProducercBs#tZdZdd„Zd„ZRS(s logs requesttlogcCs||_||_||_dS(N(tloggerRtbytestmethod(RR R R ((Rt__init__s  cCs)t|i|iƒ|iƒd|_dS(Nt(tgetattrRR R R tNone(R((RR!s (RRRRR(((RR s  tCallbackProducercBs tZdZd„Zd„ZRS(s+Performs a callback in the channel's threadcCs ||_dS(N(tcallbackR(RR((RR)scCs|iƒd|_dS(NR(RRR(R((RR,s  (RRRRR(((RR's  tfile_part_producercBs*tZdZdd>Zd„Zd„ZRS(s2producer wrapper for part of a file[-like] objectsiicCs(||_||_||_||_dS(N(tfileRtlocktstarttend(RRRRR((RR7s   cCsó|i}|pdSn|i}||jodSn|i}||}|i}||jo |}n|iiƒz |i |ƒ|i |ƒ}Wd|ii ƒX|o2|t |ƒ}||jo||_|Sqànd|_|`|S(NRi(RRRRtsizetout_buffer_sizetbsizeRtacquiretseektreadtdatatreleasetlen(RRRRRRR((RR=s2             (RRRRRR(((RR2s   tfile_close_producercBstZd„Zd„ZRS(NcCs ||_dS(N(RR(RR((RR[scCs1|i}|dj o|iƒd|_ndS(NR(RRRtclose(RR((RR^s     (RRRR(((RR"Zs titerator_producercBstZd„Zd„ZRS(NcCs ||_dS(N(titeratorR(RR%((RRfscCs/y|iiƒSWntj o dSnXdS(NR(RR%tnextt StopIteration(R((RRis(RRRR(((RR$es ( RRtsysRR RRR"R$(RRR RR"R(R$R((Rt?s    (