summaryrefslogtreecommitdiff
path: root/pysnmp/carrier
diff options
context:
space:
mode:
authorelie <elie>2013-06-30 15:23:26 +0000
committerelie <elie>2013-06-30 15:23:26 +0000
commita84fc1796c72810c20508114605d3b57726a30fa (patch)
treeadded3ed8dc8e595911a25faac8c6f00d4c828ca /pysnmp/carrier
parent5523de2c2a1bce52fcb9821373f8ba2d8e18567f (diff)
downloadpysnmp-a84fc1796c72810c20508114605d3b57726a30fa.tar.gz
move common methods to AbstractTransport
Diffstat (limited to 'pysnmp/carrier')
-rw-r--r--pysnmp/carrier/asynsock/base.py8
-rw-r--r--pysnmp/carrier/base.py16
-rw-r--r--pysnmp/carrier/twisted/base.py11
3 files changed, 16 insertions, 19 deletions
diff --git a/pysnmp/carrier/asynsock/base.py b/pysnmp/carrier/asynsock/base.py
index 83de36c..862a32d 100644
--- a/pysnmp/carrier/asynsock/base.py
+++ b/pysnmp/carrier/asynsock/base.py
@@ -59,14 +59,8 @@ class AbstractSocketTransport(asyncore.dispatcher, AbstractTransport):
def sendMessage(self, outgoingMessage, transportAddress):
raise error.CarrierError('Method not implemented')
- def registerCbFun(self, cbFun):
- self._cbFun = cbFun
-
- def unregisterCbFun(self):
- self._cbFun = None
-
def closeTransport(self):
- self.unregisterCbFun()
+ AbstractTransport.closeTransport(self)
self.close()
# asyncore API
diff --git a/pysnmp/carrier/base.py b/pysnmp/carrier/base.py
index 238da25..ccd3d51 100644
--- a/pysnmp/carrier/base.py
+++ b/pysnmp/carrier/base.py
@@ -154,12 +154,26 @@ class AbstractTransportDispatcher:
for tDomain in list(self.__transports):
self.__transports[tDomain].closeTransport()
self.unregisterTransport(tDomain)
+ self.__transports.clear()
self.unregisterRecvCbFun()
self.unregisterTimerCbFun()
-
class AbstractTransport:
protoTransportDispatcher = None
+ _cbFun = None
@classmethod
def isCompatibleWithDispatcher(cls, transportDispatcher):
return isinstance(transportDispatcher, cls.protoTransportDispatcher)
+
+ def registerCbFun(self, cbFun):
+ if self._cbFun:
+ raise error.CarrierError(
+ 'Callback function %s already registered at %s' % (self.__cbFun, self)
+ )
+ self._cbFun = cbFun
+
+ def unregisterCbFun(self):
+ self._cbFun = None
+
+ def closeTransport(self):
+ self.unregisterCbFun()
diff --git a/pysnmp/carrier/twisted/base.py b/pysnmp/carrier/twisted/base.py
index fa1da90..12bd9ee 100644
--- a/pysnmp/carrier/twisted/base.py
+++ b/pysnmp/carrier/twisted/base.py
@@ -16,14 +16,3 @@ class AbstractTwistedTransport(AbstractTransport):
"""Base Twisted Transport, to be used with TwistedDispatcher"""
def __init__(self):
self._writeQ = []
-
- # AbstractTwistedTransport API
-
- def registerCbFun(self, cbFun):
- self._cbFun = cbFun
-
- def unregisterCbFun(self):
- self._cbFun = None
-
- def closeTransport(self):
- self.unregisterCbFun()