Ticket #737: twisted.patch
File twisted.patch, 3.2 KB (added by bdew, at 2009-06-24T22:52:23Z) |
---|
-
base.py
old new 23 23 fcntl = None 24 24 import traceback 25 25 26 def validfloat(x,msg=None): 27 return repr(x)!='nan' 28 29 26 30 from twisted.internet.interfaces import IReactorCore, IReactorTime, IReactorThreads 27 31 from twisted.internet.interfaces import IResolverSimple, IReactorPluggableResolver 28 32 from twisted.internet.interfaces import IConnector, IDelayedCall … … 63 67 used to determine the current time any time that information is 64 68 needed. 65 69 """ 70 assert validfloat(time) 66 71 self.time, self.func, self.args, self.kw = time, func, args, kw 67 72 self.resetter = reset 68 73 self.canceller = cancel … … 79 84 @return: The number of seconds after the epoch at which this call is 80 85 scheduled to be made. 81 86 """ 87 assert validfloat(self.time) 88 assert validfloat(self.delayed_time) 82 89 return self.time + self.delayed_time 83 90 84 91 def cancel(self): … … 115 122 elif self.called: 116 123 raise error.AlreadyCalled 117 124 else: 125 assert validfloat(secondsFromNow) 118 126 newTime = self.seconds() + secondsFromNow 119 127 if newTime < self.time: 120 128 self.delayed_time = 0 121 129 self.time = newTime 130 assert validfloat(self.time) 122 131 self.resetter(self) 123 132 else: 124 133 self.delayed_time = newTime - self.time 134 assert validfloat(self.delayed_time) 125 135 126 136 def delay(self, secondsLater): 127 137 """Reschedule this call for a later time … … 138 148 elif self.called: 139 149 raise error.AlreadyCalled 140 150 else: 151 assert validfloat(secondsLater) 141 152 self.delayed_time += secondsLater 142 153 if self.delayed_time < 0: 143 154 self.activate_delay() 144 155 self.resetter(self) 156 assert validfloat(self.time) 145 157 146 158 def activate_delay(self): 147 159 self.time += self.delayed_time 160 assert validfloat(self.time) 148 161 self.delayed_time = 0 149 162 150 163 def active(self): … … 651 664 assert callable(_f), "%s is not callable" % _f 652 665 assert sys.maxint >= _seconds >= 0, \ 653 666 "%s is not greater than or equal to 0 seconds" % (_seconds,) 667 668 assert validfloat(_seconds) 669 assert repr(self.seconds())!='nan', 'self.seconds() [really: %r] returned NaN! %r,%r,%r'%(self.seconds,self.seconds(),self.seconds(),self.seconds()) 670 654 671 tple = DelayedCall(self.seconds() + _seconds, _f, args, kw, 655 672 self._cancelCallLater, 656 673 self._moveCallLaterSooner, … … 741 758 self._insertNewDelayedCalls() 742 759 743 760 now = self.seconds() 761 762 if self._pendingTimedCalls and repr(self._pendingTimedCalls[0].time)=='nan': 763 print 'NAN TIME DETECTED', repr(self._pendingTimedCalls[0].time), self._pendingTimedCalls[0].__dict__ 764 self._pendingTimedCalls[0].time=0 765 744 766 while self._pendingTimedCalls and (self._pendingTimedCalls[0].time <= now): 745 767 call = heappop(self._pendingTimedCalls) 746 768 if call.cancelled: