diff options
author | elie <elie> | 2013-03-15 20:50:24 +0000 |
---|---|---|
committer | elie <elie> | 2013-03-15 20:50:24 +0000 |
commit | dd85f9d672e0767beafa55810ac3b3342d35d302 (patch) | |
tree | 4db50be9e3036aded263be3a64a915f2bb8584f5 /pysnmp/carrier | |
parent | 11abdaef66b3b2be7e21de51ab5ac44a43f18112 (diff) | |
download | pysnmp-dd85f9d672e0767beafa55810ac3b3342d35d302.tar.gz |
fix of rounding error to base I/O dispatcher's next timer call calculation
Diffstat (limited to 'pysnmp/carrier')
-rw-r--r-- | pysnmp/carrier/base.py | 8 |
1 files changed, 5 insertions, 3 deletions
diff --git a/pysnmp/carrier/base.py b/pysnmp/carrier/base.py index 4aa0105..bb2424e 100644 --- a/pysnmp/carrier/base.py +++ b/pysnmp/carrier/base.py @@ -27,6 +27,7 @@ class AbstractTransportDispatcher: self.__timerCallables = [] self.__ticks = 0 self.__timerResolution = 0.5 + self.__timerDelta = self.__timerResolution * 0.05 self.__nextTime = 0 def _cbFun(self, incomingTransport, transportAddress, incomingMessage): @@ -112,18 +113,19 @@ class AbstractTransportDispatcher: if timerResolution < 0.01 or timerResolution > 10: raise error.CarrierError('Impossible timer resolution') self.__timerResolution = timerResolution + self.__timerDelta = timerResolution * 0.05 def getTimerTicks(self): return self.__ticks def handleTimerTick(self, timeNow): if self.__nextTime == 0: # initial initialization - self.__nextTime = timeNow + self.__timerResolution + self.__nextTime = timeNow + self.__timerResolution - self.__timerDelta - if self.__nextTime > timeNow: + if self.__nextTime >= timeNow: return self.__ticks += 1 - self.__nextTime = timeNow + self.__timerResolution + self.__nextTime = timeNow + self.__timerResolution - self.__timerDelta for timerCallable in self.__timerCallables: timerCallable(timeNow) |