diff options
author | elie <elie> | 2008-11-22 18:48:31 +0000 |
---|---|---|
committer | elie <elie> | 2008-11-22 18:48:31 +0000 |
commit | b5da1c7b5bda2eec12326f7fb59e8f30c56c6883 (patch) | |
tree | 79487bfc0547115e0be2623471017bae47b43009 | |
parent | 7eb85e10f2f9fc05608d4988aa6bd3f14b8ee433 (diff) | |
download | pysnmp-b5da1c7b5bda2eec12326f7fb59e8f30c56c6883.tar.gz |
allow multiple callback timer functions
-rw-r--r-- | pysnmp/carrier/base.py | 21 |
1 files changed, 11 insertions, 10 deletions
diff --git a/pysnmp/carrier/base.py b/pysnmp/carrier/base.py index 34ba80c..8b99547 100644 --- a/pysnmp/carrier/base.py +++ b/pysnmp/carrier/base.py @@ -5,7 +5,8 @@ class AbstractTransportDispatcher: def __init__(self): self.__transports = {} self.__jobs = {} - self.__recvCbFun = self.__timerCbFun = None + self.__recvCbFun = None + self.__timerCbFuns = [] self.__timeToGo = 0 def _cbFun(self, incomingTransport, transportAddress, incomingMessage): @@ -38,14 +39,13 @@ class AbstractTransportDispatcher: self.__recvCbFun = None def registerTimerCbFun(self, timerCbFun): - if self.__timerCbFun is not None: - raise error.CarrierError( - 'Callback already registered: %s' % self.__timerCbFun - ) - self.__timerCbFun = timerCbFun + self.__timerCbFuns.append(timerCbFun) - def unregisterTimerCbFun(self): - self.__timerCbFun = None + def unregisterTimerCbFun(self, timerCbFun=None): + if timerCbFun is None: + self.__timerCbFuns = [] + else: + self.__timerCbFuns.remove(timerCbFun) def registerTransport(self, tDomain, transport): if self.__transports.has_key(tDomain): @@ -77,8 +77,9 @@ class AbstractTransportDispatcher: transport.sendMessage(outgoingMessage, transportAddress) def handleTimerTick(self, timeNow): - if self.__timerCbFun and self.__timeToGo < timeNow: - self.__timerCbFun(timeNow) + if self.__timerCbFuns and self.__timeToGo < timeNow: + for timerCbFun in self.__timerCbFuns: + timerCbFun(timeNow) self.__timeToGo = timeNow + 1 def jobStarted(self, jobId): |