import main from modules import chankeep from utils.logging.debug import debug def get_first_relay(net): """ Get the first relay in the network. :param net: the network :param num: number or relay :return: IRCPool instance for the IRC bot """ cur_relay = 0 max_relay = max(main.network[net].relays.keys()) debug(f"get_first_relay() {net}: max_relay:{max_relay}") activeRelays = chankeep.getActiveRelays(net) debug(f"get_first_relay() {net}: activeRelays:{activeRelays}") while cur_relay != max_relay: cur_relay += 1 if cur_relay not in activeRelays: continue name = net + str(cur_relay) if name in main.IRCPool.keys(): # debug(f"get_first_relay() {net}: found relay {name}") return main.IRCPool[name] return None def is_first_relay(net, num): """ Determine if we are the first relay for the network. :param net: the network :param num: number or relay :return: True if we are the first relay, False otherwise """ first_relay = get_first_relay(net) if not first_relay: return False return first_relay.num == num def get_active_relays(net): """ Get all active instances for the network. :param net: the network :return: list of active instances :rtype: list of IRCPool instances """ active_nums = chankeep.getActiveRelays(net) active_insts = [] for num in active_nums: name = net + str(num) if name in main.IRCPool.keys(): active_insts.append(main.IRCPool[name]) return active_insts def get_connected_relays(net): """ Get all connected instances for the network. :param net: the network :return: list of active instances :rtype: list of IRCPool instances """ active_nums = chankeep.getConnectedRelays(net) active_insts = [] for num in active_nums: name = net + str(num) if name in main.IRCPool.keys(): active_insts.append(main.IRCPool[name]) return active_insts