mς "αΈEc@sFdfd„ƒYZdfd„ƒYZdfd„ƒYZd„ZdS(tfifocBsPtZd„Zd„Zd„Zd„Zd„Zd„Zd„Zd„Z RS( NcCs(d\|_|_d|_d|_dS(Ni(NN(tNonetselftheadttailtlengtht node_cache(R((t2/data/zmath/zope/lib/python/ZServer/medusa/fifo.pyt__init__s cCs|iS(N(RR(R((Rt__len__ scCs\d|_|id|_|dg}|idjo ||_n||id<||_dS(Ni(RRRRtvtpRR(RR R ((Rtpushs    cCssd|_|i}|djo td‚nD|id|_|\}}||_|djo d|_ n|SdS(Nspop() from an empty queuei( RRRRtpairt ValueErrorRtvaluetnextR(RRRR ((Rtpops        cCs,|idjo td‚n |idSdS(Nsfirst() of an empty queuei(RRRR(R((Rtfirst's cCsUd|_|id|_|i}||g}||_|djo ||_ndS(Ni( RRRRRtold_headtthingtnew_headR(RRRR((Rt push_front-s     cCsM|}|i}x |o|d}|d}qW||df|_|dS(Nii(tntiRRthR(RRRR((Rt_nth6s  cCs›|djp||ijo td‚nn|ioV|i\}}||djo%|d}||df|_|Sq—|i|ƒSn|i|ƒSdS(Nisindex out of rangei( tindexRRt IndexErrorRtjRtresultR(RRRRR((Rt __getitem__?s   ( t__name__t __module__RR R RRRRR(((RRs    tprotected_fifocBs;tZdd„Zd„ZeZd„ZeZd„ZRS(NcCsE|djodk}|iƒ|_n ||_tiƒ|_dS(N(tlockRtthreadt allocate_lockRR(RR#R$((RRQs    cCs6z!|iiƒ|ii|ƒWd|iiƒXdS(N(RR#tacquireRR titemtrelease(RR'((RR Ys  cCs3z|iiƒ|iiƒSWd|iiƒXdS(N(RR#R&RRR((R((RRbs  cCs3z|iiƒt|iƒSWd|iiƒXdS(N(RR#R&tlentqueueR((R((RR ks  ( R R!RRR tenqueueRtdequeueR (((RR"Os    t output_fifocBsktZdZdZdZd„Zd„Zd„Zd„Zd„Z d „Z d „Z d „Z d „Z RS( NtembeddedteofttriggercCstƒ|_d|_dS(N(RRRt _embedded(R((RRxs cCs&||_|ii|i|fƒdS(N(RRtparentR tEMBEDDED(RR((Rt push_embedded}s cCs|ii|idfƒdS(N(RRR tEOFR(R((Rtpush_eof‚scCs|ii|i|fƒdS(N(RRR tTRIGGERtthunk(RR8((Rt push_trigger†scCs|ii|ƒdS(N(RRR R'(RR'((RR ‰scCs2|idjot|iƒSnt|iƒSdS(N(RR1RR)R(R((RR scCst|ƒdjS(Ni(R)R(R((Rtempty•scCs2|idjo|iiƒSn|iiƒSdS(N(RR1RRR(R((RR˜scCs|idj o|iiƒSnέ|iiƒ}d|_t|iƒo°|iiƒ}t |ƒt fƒjo„|\}}||i jo ||_nK||i jo|i}d|_d|_n||ijo |ƒn|iiƒqωn|SdS(N(RR1RRRRR)RtfrontttypetkindRR3R5R2R7(RRR2R=RR;((RRžs$       (R R!R3R5R7RR4R6R9R R R:RR(((RR-rs        cCs»tƒ}tƒ}tƒ}|idƒ|i|ƒ|idƒ|idƒ|idƒ|i|ƒ|iƒ|idƒ|iƒ|idƒ|idƒx|iƒGHq§WdS( Ntonettwotthreetfourtfivetsixtseveni(R-toftf2tf3R R4R6R(RERFRG((Rt test_embedded»s"              N(RR"R-RH(R-RHR"R((Rt?sI#I