Improved network stability and other related fixes:

* server: fixed that a critical errors ignored in user commands threads (now it will be added to the logs);
* network: fixed frozen user responses in some use cases;
* network: fixed accidental and incorrect user responses (only latest response will be used now);
* network: improved freeze logs, added problem method name and code's line number;
* cheats: removed outdated deck and card load logic (only init.txt commands supports now);
* cheats: fixed wrong priority after add card dialog (closes #11437);
* cheats: improved stability and random errors on cheat executes (related to #11437);
* docs: added details on network and thread logic, human feedback life cycle, etc (see HumanPlayer, ThreadExecutorImpl);
This commit is contained in:
Oleg Agafonov 2023-11-24 21:22:16 +04:00
parent 4ba3e1fec5
commit 53add71826
33 changed files with 476 additions and 273 deletions

View file

@ -2931,6 +2931,11 @@ public class TestPlayer implements Player {
computerPlayer.signalPlayerConcede();
}
@Override
public void signalPlayerCheat() {
computerPlayer.signalPlayerCheat();
}
@Override
public void abortReset() {
computerPlayer.abortReset();

View file

@ -35,7 +35,7 @@ import mage.server.managers.ConfigSettings;
import mage.server.util.ConfigFactory;
import mage.server.util.ConfigWrapper;
import mage.server.util.PluginClassLoader;
import mage.server.util.SystemUtil;
import mage.utils.SystemUtil;
import mage.server.util.config.GamePlugin;
import mage.server.util.config.Plugin;
import mage.target.TargetPermanent;

View file

@ -28,7 +28,7 @@ import mage.player.ai.ComputerPlayerMCTS;
import mage.players.ManaPool;
import mage.players.Player;
import mage.server.game.GameSessionPlayer;
import mage.server.util.SystemUtil;
import mage.utils.SystemUtil;
import mage.util.CardUtil;
import mage.view.GameView;
import org.junit.Assert;

View file

@ -1,7 +1,7 @@
package org.mage.test.serverside.cheats;
import mage.constants.*;
import mage.server.util.SystemUtil;
import mage.utils.SystemUtil;
import org.junit.Assert;
import org.junit.Test;
import org.mage.test.serverside.base.CardTestPlayerBase;
@ -56,7 +56,7 @@ public class LoadCheatsTest extends CardTestPlayerBase {
execute();
setChoice(playerA, "5"); // choose [group 3]: 5 = 2 default menus + 3 group
SystemUtil.addCardsForTesting(currentGame, commandsFile, playerA);
SystemUtil.executeCheatCommands(currentGame, commandsFile, playerA);
assertHandCount(playerA, "Razorclaw Bear", 1);
assertPermanentCount(playerA, "Mountain", 3);

View file

@ -724,6 +724,11 @@ public class PlayerStub implements Player {
}
@Override
public void signalPlayerCheat() {
}
@Override
public void abortReset() {

View file

@ -2,7 +2,7 @@ package org.mage.test.testapi;
import mage.constants.PhaseStep;
import mage.constants.Zone;
import mage.server.util.SystemUtil;
import mage.utils.SystemUtil;
import org.junit.Assert;
import org.junit.Test;
import org.mage.test.serverside.base.CardTestPlayerBase;