Exemple #1
0
	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()
Exemple #2
0
			async def download_network():
				cli = DownloadClient(self.client.host, msg.params[0])
				par = Reader(await cli.download(), "<download>")
				self.network = par.create_network()