def __init__(self, update_statuses): self._update_statuses = update_statuses self._process_provider = ProcessProvider() self._process = None self._exe = self._find_exe() self._games_provider = LocalGames() self.database_parser = None self.config_parser = ConfigParser(None) self.uninstaller = None self.installed_games_cache = self.get_installed_games() self.classic_games_parsing_task = None
def __init__(self, update_statuses): self._update_statuses = update_statuses self._process_provider = ProcessProvider() self._process = None self._exe = self._find_exe() self._games_provider = LocalGames() self.database_parser = None self.config_parser = None self.uninstaller = None self.installed_games_cache = self.get_installed_games() loop = asyncio.get_event_loop() loop.create_task(self._register_local_data_watcher()) loop.create_task(self._register_classic_games_updater()) self.classic_games_parsing_task = None
async def _notify_about_game_stop(self, game, starting_timeout): id_to_watch = game.info.id if id_to_watch in self.watched_running_games: log.debug(f'Game {id_to_watch} is already watched. Skipping') return try: self.watched_running_games.add(id_to_watch) await asyncio.sleep(starting_timeout) ProcessProvider().update_games_processes([game]) log.info(f'Setuping process watcher for {game._processes}') loop = asyncio.get_event_loop() await loop.run_in_executor(None, game.wait_until_game_stops) finally: self.update_local_game_status(LocalGame(id_to_watch, LocalGameState.Installed)) self.watched_running_games.remove(id_to_watch)
async def get_local_games(self): try: local_games = [] running_games = ProcessProvider().update_games_processes(self.installed_games.values()) log.info(f"Installed games {self.installed_games.items()}") log.info(f"Running games {running_games}") for id_, game in self.installed_games.items(): if game.playable: state = LocalGameState.Installed if id_ in running_games: state |= LocalGameState.Running else: state = LocalGameState.None_ local_games.append(LocalGame(id_, state)) return local_games except Exception as e: log.exception(f"failed to get local games: {str(e)}") raise finally: self.enable_notifications = True
def get_running_games(self): return ProcessProvider().update_games_processes( self.get_installed_games().values())
def __init__(self): self._process_provider = ProcessProvider() self._process = None self._exe = self._find_exe()
def __init__(self): self._process_provider = ProcessProvider() self._process = None self._exe = self._find_exe() self.classics_lock = Lock() self.installed_classics = {}