You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
46 lines
1.5 KiB
46 lines
1.5 KiB
#
|
|
# This file is part of pysnmp software.
|
|
#
|
|
# Copyright (c) 2005-2016, Ilya Etingof <ilya@glas.net>
|
|
# License: http://pysnmp.sf.net/license.html
|
|
#
|
|
from pyasn1.compat.octets import null
|
|
from pysnmp.carrier.base import AbstractTransport
|
|
from pysnmp import error
|
|
|
|
__all__ = []
|
|
|
|
class AbstractTransportTarget:
|
|
transportDomain = None
|
|
protoTransport = AbstractTransport
|
|
def __init__(self, transportAddr, timeout=1, retries=5, tagList=null):
|
|
self.transportAddr = self._resolveAddr(transportAddr)
|
|
self.timeout = timeout
|
|
self.retries = retries
|
|
self.tagList = tagList
|
|
self.iface = None
|
|
|
|
def __repr__(self):
|
|
return '%s(%r, timeout=%r, retries=%r, tagList=%r)' % (
|
|
self.__class__.__name__, self.transportAddr,
|
|
self.timeout, self.retries, self.tagList
|
|
)
|
|
|
|
def getTransportInfo(self):
|
|
return self.transportDomain, self.transportAddr
|
|
|
|
def setLocalAddress(self, iface):
|
|
self.iface = iface
|
|
return self
|
|
|
|
def openClientMode(self):
|
|
self.transport = self.protoTransport().openClientMode(self.iface)
|
|
return self.transport
|
|
|
|
def verifyDispatcherCompatibility(self, snmpEngine):
|
|
if not self.protoTransport.isCompatibleWithDispatcher(snmpEngine.transportDispatcher):
|
|
raise error.PySnmpError('Transport %r is not compatible with dispatcher %r' % (self.protoTransport, snmpEngine.transportDispatcher))
|
|
|
|
def _resolveAddr(self, transportAddr):
|
|
raise NotImplementedError()
|