def on_line_received(self, buf): LOGGER.debug("%s >> %s", self.process, buf) command_and_args = buf.split(None, 1) if not command_and_args: return if len(command_and_args) >= 1: if command_and_args[0] == "uciok": return self._uciok() elif command_and_args[0] == "readyok": return self._readyok() if len(command_and_args) >= 2: if command_and_args[0] == "id": return self._id(command_and_args[1]) elif command_and_args[0] == "bestmove": return self._bestmove(command_and_args[1]) elif command_and_args[0] == "copyprotection": return self._copyprotection(command_and_args[1]) elif command_and_args[0] == "registration": return self._registration(command_and_args[1]) elif command_and_args[0] == "info": return self._info(command_and_args[1]) elif command_and_args[0] == "option": return self._option(command_and_args[1])
def on_line_received(self, buf): LOGGER.debug("%s >> %s", self.process, buf) if buf.startswith("feature"): return self._feature(buf[8:]) elif buf.startswith("Illegal"): split_buf = buf.split() illegal_move = split_buf[-1] exception_msg = "Engine received an illegal move: {}".format( illegal_move) if len(split_buf) == 4: reason = split_buf[2][1:-2] exception_msg = " ".join([exception_msg, reason]) raise EngineStateException(exception_msg) elif buf.startswith("Error"): err_msg = buf.split()[1][1:-2] raise EngineStateException( "Engine produced an error: {}".format(err_msg)) elif buf.startswith("#"): return command_and_args = buf.split() if not command_and_args: return if len(command_and_args) == 1: if command_and_args[0] == "resign": return self._resign() elif len(command_and_args) == 2: if command_and_args[0] == "pong": return self._pong(command_and_args[1]) elif command_and_args[0] == "move": return self._move(command_and_args[1]) elif command_and_args[0] == "offer" and command_and_args[ 1] == "draw": return self._offer_draw() elif command_and_args[0] == "Hint:": return self._hint(command_and_args[1]) elif len(command_and_args) >= 5: return self._post(buf)
def send_line(self, line): LOGGER.debug("%s << %s", self.process, line) return self.process.send_line(line)