+'''\r
+Created on 21 aout 2009\r
+\r
+@author: Samuel Benveniste\r
+'''\r
+import time\r
+\r
+class EventLog:\r
+ '''\r
+ classdocs\r
+ '''\r
+ \r
+ def __init__(self,eventGroups = [], times = []):\r
+ '''\r
+ Constructor\r
+ '''\r
+ self.eventGroups = eventGroups\r
+ self.times = times\r
+ self.rate = 1\r
+ self.yielder = self.eventGroupYielder()\r
+ self.yieldPointer = 0\r
+ \r
+ self._timeCounter = 0\r
+ \r
+ def __getstate__(self):\r
+ d = []\r
+ d.append(self.eventGroups)\r
+ d.append(self.times)\r
+ return d\r
+ \r
+ def __setstate__(self,d):\r
+ self.eventGroups = d[0]\r
+ self.times = d[1]\r
+ self.yielder = self.eventGroupYielder()\r
+ \r
+ self._timeCounter = 0\r
+ \r
+ def appendEventGroup(self, eventGroup):\r
+ t = time.clock()*1000\r
+ self.times.append(t)\r
+ self.eventGroups.append(eventGroup)\r
+ \r
+ def update(self,timePassed):\r
+ self._timeCounter += timePassed\r
+ \r
+ def setReplayRate(self,rate):\r
+ self.rate = rate\r
+ self.yielder = self.eventGroupYielder()\r
+ \r
+ def getPickledEvents(self):\r
+ return(self.yielder.next())\r
+ \r
+ def getCurrentTime(self):\r
+ return(self.times[self.yieldPointer])\r
+ \r
+ def eventGroupYielder(self):\r
+ '''\r
+ Will return the next event to post if enough time has passed and [] otherwise\r
+ '''\r
+ i = 0\r
+ while i in range(len(self.eventGroups)):\r
+ print "rate is " + str(self.rate)\r
+ if self._timeCounter*self.rate>self.times[i]:\r
+ print str(self._timeCounter*self.rate)+" > "+ str(self.times[i])\r
+ self.yieldPointer = i\r
+ yield self.eventGroups[i]\r
+ i += 1\r
+ else:\r
+ yield []\r