logging.getLogger("panoramisk").setLevel(logging.INFO)
class Asterisk(misc.Object):
- def init(self):
- self.__manager = None
-
- loop = asyncio.get_event_loop()
-
- # Connect as soon as the event loop starts
- loop.create_task(self.connect())
-
- @property
- def manager(self):
- if not self.__manager:
- raise RuntimeError("Asterisk is not connected")
-
- return self.__manager
-
async def connect(self):
"""
Connects to Asterisk
def _on_connect(self, manager):
logging.debug("Connection to Asterisk established")
- # Close any existing connections
- if self.__manager:
- self.__manager.close()
-
- self.__manager = manager
-
async def _fetch(self, cls, action, filter=None, data={}):
objects = []
# Collect arguments
args = { "Action" : action } | data
+ # Connect to Asterisk
+ manager = await self.connect()
+
# Run the action and parse all messages
- for data in await self.manager.send_action(args):
+ for data in await manager.send_action(args):
if not "Event" in data or not data.Event == cls.event:
continue