def __init__(self, name, intg_file, layout_file, login_provider, host=None, port=1954, ssl=None, warn=False): self.name = name self.host = host self.port = port self.server = None self.loop = None self.clients = {} self.login_provider = login_provider self._ssl = ssl self.network = None with open(intg_file) as f: self.data = data = f.read() self.compressed_data = zlib.compress(data.encode("utf-8")) reader = Reader(data, intg_file, warn=warn) self.network = reader.create_network() if self.network is None: raise ServerError("no network to control") self.layouts = None with open(layout_file) as f: self.layout_data = data = f.read() self.compressed_layout_data = zlib.compress(data.encode("utf-8")) reader = LayoutReader(self.network, data, layout_file, warn=warn) self.layouts = reader.create_layouts() if self.layouts is None: raise ServerError("invalid layout") for intg in self.network.interlockings: for lever in intg.levers: lever.on_change_state(self._on_change_lever_state) for switch in self.network.switches: switch.on_change_state(self._on_change_switch_state) for signal in self.network.signals: signal.on_change_state(self._on_change_signal_state) for track in self.network.tracks: for sec in track.sections: sec.on_change_occupied(self._on_change_track_occupied) for signal in self.network.signals: signal.reset()
async def download_network(): cli = DownloadClient(self.client.host, msg.params[0]) par = Reader(await cli.download(), "<download>") self.network = par.create_network()