diff options
author | elie <elie> | 2013-06-30 16:00:14 +0000 |
---|---|---|
committer | elie <elie> | 2013-06-30 16:00:14 +0000 |
commit | 6c60f5b3c308847858f669a0000d9b7a7cb6a83c (patch) | |
tree | f0240f6921eff1a53f049098d5f47a3f8feb3d79 | |
parent | 44c3c20d6c8eb6c59e0d62af10c86906b91d8160 (diff) | |
download | pysnmp-6c60f5b3c308847858f669a0000d9b7a7cb6a83c.tar.gz |
whenever addTransport() automatically instantiates transportDispatcher,
it takes note of this and further counts all transport registration.
If delTransoport() seems that transportDispatcher was automatically
instantiated, it shutdowns it automatically whenever registered
transport count reaches zero.
-rw-r--r-- | pysnmp/entity/config.py | 12 |
1 files changed, 11 insertions, 1 deletions
diff --git a/pysnmp/entity/config.py b/pysnmp/entity/config.py index 55e0e67..f5e9f53 100644 --- a/pysnmp/entity/config.py +++ b/pysnmp/entity/config.py @@ -315,15 +315,25 @@ def addTransport(snmpEngine, transportDomain, transport): snmpEngine.registerTransportDispatcher( transport.protoTransportDispatcher() ) + # here we note that we have created transportDispatcher automatically + snmpEngine.cache['automaticTransportDispatcher'] = 0 snmpEngine.transportDispatcher.registerTransport( transportDomain, transport ) + if 'automaticTransportDispatcher' in snmpEngine.cache: + snmpEngine.cache['automaticTransportDispatcher'] += 1 def delTransport(snmpEngine, transportDomain): if not snmpEngine.transportDispatcher: return snmpEngine.transportDispatcher.unregisterTransport(transportDomain) - snmpEngine.unregisterTransportDispatcher() + # automatically shutdown automatically created transportDispatcher + if 'automaticTransportDispatcher' in snmpEngine.cache: + snmpEngine.cache['automaticTransportDispatcher'] -= 1 + if not snmpEngine.cache['automaticTransportDispatcher']: + snmpEngine.transportDispatcher.closeDispatcher() + snmpEngine.unregisterTransportDispatcher() + del snmpEngine.cache['automaticTransportDispatcher'] addSocketTransport = addTransport delSocketTransport = delTransport |