From a80c683901a5bc9dd2cd278f5164adf86b9848f0 Mon Sep 17 00:00:00 2001 From: Anthony Calosa Date: Fri, 1 Nov 2019 17:34:42 +0800 Subject: [PATCH] support android 6 (slow networkplay) tested with two Android 6 device --- .../java/forge/net/CustomObjectEncoder.java | 18 +++++++++--------- .../java/forge/net/GameProtocolHandler.java | 2 +- .../java/forge/net/GameProtocolSender.java | 4 ++-- .../main/java/forge/net/ProtocolMethod.java | 3 +++ 4 files changed, 15 insertions(+), 12 deletions(-) diff --git a/forge-gui/src/main/java/forge/net/CustomObjectEncoder.java b/forge-gui/src/main/java/forge/net/CustomObjectEncoder.java index acacaa2c2c9..255a784bfac 100644 --- a/forge-gui/src/main/java/forge/net/CustomObjectEncoder.java +++ b/forge-gui/src/main/java/forge/net/CustomObjectEncoder.java @@ -19,10 +19,9 @@ public class CustomObjectEncoder extends MessageToByteEncoder { protected void encode(ChannelHandlerContext ctx, Serializable msg, ByteBuf out) throws Exception { int startIdx = out.writerIndex(); ByteBufOutputStream bout = new ByteBufOutputStream(out); - ElsaObjectOutputStream oout = null; - ObjectOutputStream ooutOld = null; if (GuiBase.getpropertyConfig()){ + ElsaObjectOutputStream oout = null; try { bout.write(LENGTH_PLACEHOLDER); oout = new ElsaObjectOutputStream(bout); @@ -35,21 +34,22 @@ public class CustomObjectEncoder extends MessageToByteEncoder { bout.close(); } } - } - else { + } else { + ObjectOutputStream oout = null; try { bout.write(LENGTH_PLACEHOLDER); - ooutOld = new ObjectOutputStream(bout); - ooutOld.writeObject(msg); - ooutOld.flush(); + oout = new ObjectOutputStream(bout); + oout.writeObject(msg); + oout.flush(); } finally { - if (ooutOld != null) { - ooutOld.close(); + if (oout != null) { + oout.close(); } else { bout.close(); } } } + int endIdx = out.writerIndex(); out.setInt(startIdx, endIdx - startIdx - 4); } diff --git a/forge-gui/src/main/java/forge/net/GameProtocolHandler.java b/forge-gui/src/main/java/forge/net/GameProtocolHandler.java index e861f2ab5cc..face68c68ac 100644 --- a/forge-gui/src/main/java/forge/net/GameProtocolHandler.java +++ b/forge-gui/src/main/java/forge/net/GameProtocolHandler.java @@ -40,7 +40,7 @@ public abstract class GameProtocolHandler extends ChannelInboundHandlerAdapte } final Object[] args = event.getObjects(); - //protocolMethod.checkArgs(args); + protocolMethod.checkArgs(args); final Object toInvoke = getToInvoke(ctx); diff --git a/forge-gui/src/main/java/forge/net/GameProtocolSender.java b/forge-gui/src/main/java/forge/net/GameProtocolSender.java index 028b508a86f..c692ebcb5c8 100644 --- a/forge-gui/src/main/java/forge/net/GameProtocolSender.java +++ b/forge-gui/src/main/java/forge/net/GameProtocolSender.java @@ -12,13 +12,13 @@ public final class GameProtocolSender { } public void send(final ProtocolMethod method, final Object... args) { - //method.checkArgs(args); + method.checkArgs(args); remote.send(new GuiGameEvent(method, args)); } @SuppressWarnings("unchecked") public T sendAndWait(final ProtocolMethod method, final Object... args) { - //method.checkArgs(args); + method.checkArgs(args); try { final Object returned = remote.sendAndWait(new GuiGameEvent(method, args)); method.checkReturnValue(returned); diff --git a/forge-gui/src/main/java/forge/net/ProtocolMethod.java b/forge-gui/src/main/java/forge/net/ProtocolMethod.java index e7f52516f3b..da4829bfb8b 100644 --- a/forge-gui/src/main/java/forge/net/ProtocolMethod.java +++ b/forge-gui/src/main/java/forge/net/ProtocolMethod.java @@ -9,6 +9,7 @@ import java.util.Map; import com.google.common.base.Function; +import forge.GuiBase; import forge.assets.FSkinProp; import forge.deck.CardPool; import forge.game.GameEntityView; @@ -155,6 +156,8 @@ public enum ProtocolMethod { } public void checkArgs(final Object[] args) { + if (GuiBase.getpropertyConfig()) + return; //uses custom serializer for Android 8+.. for (int iArg = 0; iArg < args.length; iArg++) { Object arg = null; Class type = null;