mò Tã¸Ec@s&dZdkZdfd„ƒYZdS(s[ZODB transfer activity monitoring $Id: ActivityMonitor.py 25186 2004-06-02 15:07:33Z jim $NtActivityMonitorcBsPtZdZdd„Zd„Zd„Zd„Zd„Zdddd „ZRS( sXZODB load/store activity monitor This simple implementation just keeps a small log in memory and iterates over the log when getActivityAnalysis() is called. It assumes that log entries are added in chronological sequence, which is only guaranteed because DB.py holds a lock when calling the closedConnection() method. icCs||_g|_dS(N(thistory_lengthtselftlog(RR((t3/data/zmath/zope/lib/python/ZODB/ActivityMonitor.pyt__init__ s cCsQ|i}tiƒ}|idƒ\}}|i|||fƒ|i |ƒdS(Ni( RRttimetnowtconntgetTransferCountstloadststorestappendttrim(RRR RR R((RtclosedConnection$s   cCsr|i}||i}d}t|ƒ}x1||jo#||d|jo|d}q+W|o ||4ndS(Nii(RRRRtcutofftntlentloglen(RRRRRR((RR +s   "cCs ||_|itiƒƒdS(N(RRR R(RR((RtsetHistoryLength5s cCs|iS(N(RR(R((RtgetHistoryLength9sii c Cs÷g}tiƒ}|djo||i}n|djo |}nxrt|ƒD]d} |i hd|||| |<d|||| d|<dd<dd<dd<ƒqTW|d} | d}d}d} d}d}xÒ|iD]Ç\} }} | |joqòn| |joPnxq| |joc|| d<|| d<| | d