summaryrefslogtreecommitdiff
path: root/pysnmp/carrier/asyncio/dgram/base.py
diff options
context:
space:
mode:
Diffstat (limited to 'pysnmp/carrier/asyncio/dgram/base.py')
-rw-r--r--pysnmp/carrier/asyncio/dgram/base.py13
1 files changed, 7 insertions, 6 deletions
diff --git a/pysnmp/carrier/asyncio/dgram/base.py b/pysnmp/carrier/asyncio/dgram/base.py
index 362d211d..9f234de5 100644
--- a/pysnmp/carrier/asyncio/dgram/base.py
+++ b/pysnmp/carrier/asyncio/dgram/base.py
@@ -41,8 +41,6 @@ try:
except ImportError:
import trollius as asyncio
-loop = asyncio.get_event_loop()
-
class DgramAsyncioProtocol(asyncio.DatagramProtocol, AbstractAsyncioTransport):
"""Base Asyncio datagram Transport, to be used with AsyncioDispatcher"""
@@ -50,15 +48,18 @@ class DgramAsyncioProtocol(asyncio.DatagramProtocol, AbstractAsyncioTransport):
addressType = lambda x: x
transport = None
- def __init__(self, sock=None, sockMap=None):
+ def __init__(self, sock=None, sockMap=None, loop=None):
self._writeQ = []
self._lport = None
+ if loop is None:
+ loop = asyncio.get_event_loop()
+ self.loop = loop
def datagram_received(self, datagram, transportAddress):
if self._cbFun is None:
raise error.CarrierError('Unable to call cbFun')
else:
- loop.call_soon(self._cbFun, self, transportAddress, datagram)
+ self.loop.call_soon(self._cbFun, self, transportAddress, datagram)
def connection_made(self, transport):
self.transport = transport
@@ -79,7 +80,7 @@ class DgramAsyncioProtocol(asyncio.DatagramProtocol, AbstractAsyncioTransport):
def openClientMode(self, iface=None):
try:
- c = loop.create_datagram_endpoint(
+ c = self.loop.create_datagram_endpoint(
lambda: self, local_addr=iface, family=self.sockFamily
)
self._lport = asyncio.async(c)
@@ -89,7 +90,7 @@ class DgramAsyncioProtocol(asyncio.DatagramProtocol, AbstractAsyncioTransport):
def openServerMode(self, iface):
try:
- c = loop.create_datagram_endpoint(
+ c = self.loop.create_datagram_endpoint(
lambda: self, local_addr=iface, family=self.sockFamily
)
self._lport = asyncio.async(c)