# This file is part of naxalnet. # Copyright (C) 2021 The naxalnet Authors # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # You should have received a copy of the GNU General Public License # along with this program. If not, see . """ daemon.py --------- The daemon part. This is currently under construction. """ from dasbus.loop import EventLoop from naxalnet.iwd import IWD, IWD_DEVICE_INTERFACE from naxalnet.log import logger class Daemon: """implements the daemon part""" def __init__(self): self.loop = EventLoop() self.iwd = IWD() self.callback = None def on_device_add(self, path, data): """ this function will be run every time a device is added """ if IWD_DEVICE_INTERFACE in data: logger.debug("New device %s found", str(data[IWD_DEVICE_INTERFACE]["Name"])) logger.info("Reloading") self.callback() def on_device_remove(self, path, data): """ this function will be run every time a device is removed """ if IWD_DEVICE_INTERFACE in data: logger.debug("A device was removed") logger.info("Reloading") self.callback() def add_callback(self, callback): """ register the callback with D-Bus so that callback is run every time a device is added or removed """ self.callback = callback proxy = self.iwd._proxy proxy.InterfacesAdded.connect(self.on_device_add) proxy.InterfacesRemoved.connect(self.on_device_remove) def start(self): """ start the daemon """ logger.debug("Starting daemon") self.loop.run()