mς MγΈEc@sRdZdkZdkZdklZdfd„ƒYZdefd„ƒYZdS(sA TransactionBuffer store transaction updates until commit or abort. A transaction may generate enough data that it is not practical to always hold pending updates in memory. Instead, a TransactionBuffer is used to store the data until a commit or abort. N(sLocktTransactionBuffercBsGtZd„Zd„Zd„Zd„Zd„Zd„Zd„ZRS(NcCsdtiddƒ|_tƒ|_d|_d|_d|_t i |idƒ|_ d|i _ dS(Ntsuffixs.tbufii( ttempfilet TemporaryFiletselftfiletLocktlocktclosedtcounttsizetcPickletPicklertpicklertfast(R((t4/data/zmath/zope/lib/python/ZEO/TransactionBuffer.pyt__init__8s    cCsV|iiƒz4d|_y|iiƒWntj onXWd|iiƒXdS(Ni(RRtacquireRRtclosetOSErrortrelease(R((RRCs   cCs9|iiƒz|i|||ƒWd|iiƒXdS(N(RRRt_storetoidtversiontdataR(RRRR((RtstoreNs  cCs‡|iodSn|ii|||fƒ|id7_|it |ƒd|_|o(|it |ƒt |ƒd|_ndS(s,Store oid, version, data for later retrievalNiii ( RRR tdumpRRRR R tlen(RRRR((RRUs cCs`|iiƒz>|iodSn|ii||dfƒ|i d7_ Wd|ii ƒXdS(Ni( RRRRR RRRtNoneR R(RRR((Rt invalidateas  cCsZ|iiƒz8|iodSn|iidƒd|_d|_Wd|iiƒXdS(sMark the buffer as emptyNi( RRRRRtseekR R R(R((Rtclearks    cCsh|iiƒzF|iodSn|iiƒ|iidƒt|i|iƒSWd|ii ƒXdS(Ni( RRRRRtflushRt TBIteratorR R(R((Rt__iter__ws   ( t__name__t __module__RRRRRRR"(((RRs  R!cBs#tZd„Zd„Zd„ZRS(NcCs(||_||_ti|ƒ|_dS(N(tfRRR R t Unpicklert unpickler(RR%R ((RR„s  cCs|S(N(R(R((RR"‰scCsU|idjo#|iidƒd|_t‚n|iiƒ}|id8_|S(s(Return next tuple of data or None if EOFiiN( RR RRR t StopIterationR'tloadt oid_ver_data(RR*((RtnextŒs  (R#R$RR"R+(((RR!‚s  (t__doc__R Rt threadingRRtobjectR!(R RRRR!((Rt?s    f