|  | @@ -51,14 +51,12 @@ class ChessSession:
 | 
	
		
			
				|  |  |          self.board.push(chess.Move.null())
 | 
	
		
			
				|  |  |          self.move_ts = time.time()
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -    async def end(self):
 | 
	
		
			
				|  |  | -        await self.engine.quit()
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  class ChessManager:
 | 
	
		
			
				|  |  |      def __init__(self, engine_path):
 | 
	
		
			
				|  |  |          self.engine_path = engine_path
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +        self.engine = None
 | 
	
		
			
				|  |  |          self.sessions = {}
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      async def cleanup(self):
 | 
	
	
		
			
				|  | @@ -75,9 +73,10 @@ class ChessManager:
 | 
	
		
			
				|  |  |          if id in self.sessions:
 | 
	
		
			
				|  |  |              await self.end(id)
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -        _, engine = await chess.engine.popen_uci(self.engine_path)
 | 
	
		
			
				|  |  | +        if not self.engine:
 | 
	
		
			
				|  |  | +            _, self.engine = await chess.engine.popen_uci(self.engine_path)
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -        self.sessions[id] = ChessSession(engine)
 | 
	
		
			
				|  |  | +        self.sessions[id] = ChessSession(self.engine)
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      async def end(self, id):
 | 
	
		
			
				|  |  |          session = self.sessions.get(id)
 | 
	
	
		
			
				|  | @@ -86,8 +85,6 @@ class ChessManager:
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |          del self.sessions[id]
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -        await session.end()
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  |          return True
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      async def move(self, id, move=None):
 |