From ab1fc4cafaac2c5e92d6d983d96df90c77e04ed0 Mon Sep 17 00:00:00 2001 From: snicker Date: Tue, 7 Apr 2020 10:15:15 +0800 Subject: [PATCH] =?utf8?q?=E5=B0=9D=E8=AF=95=E4=BC=A0=20DisConnect=20By=20?= =?utf8?q?Server=E4=BA=8B=E4=BB=B6=E5=88=B0KeepAalive=EF=BC=8C=E8=AE=A9?= =?utf8?q?=E5=85=B6=E5=88=A4=E6=96=AD=E6=98=AF=E5=90=A6=E9=9C=80=E8=A6=81?= =?utf8?q?=E9=87=8D=E6=96=B0=E5=B0=9D=E8=AF=95=E8=BF=9E=E6=8E=A5=E6=9C=8D?= =?utf8?q?=E5=8A=A1=E5=99=A8=E3=80=82=20=E5=B0=9D=E8=AF=95=E8=A7=A3?= =?utf8?q?=E5=86=B3=20=E9=9D=9E=E6=B3=95IMEI=E9=80=A0=E6=88=90=E9=87=8D?= =?utf8?q?=E8=BF=9E=E6=AC=A1=E6=95=B0=E8=BF=87=E5=A4=9A=EF=BC=8C=E9=9D=9E?= =?utf8?q?=E5=B8=B8=E8=80=97=E7=94=B5=E7=9A=84=E9=97=AE=E9=A2=98=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- .../java/com/enqualcomm/support/CoreService.java | 9 +++++---- .../com/enqualcomm/support/service/CheckSIM.java | 6 ++++-- .../com/enqualcomm/support/service/Deliver.java | 6 ++++-- .../enqualcomm/support/service/Initialize.java | 6 ++++-- .../com/enqualcomm/support/service/KeepAlive.java | 15 ++++++++++----- .../support/service/SynchronousTime.java | 6 ++++-- .../service/base/AbstractConnectionService.java | 6 +++--- .../support/service/base/ConnectionService.java | 2 +- .../support/utils/ConnectionListener.java | 2 +- .../enqualcomm/support/utils/NettyConnection.java | 4 ++-- .../com/enqualcomm/support/utils/RxSocket.java | 9 +++++---- 11 files changed, 43 insertions(+), 28 deletions(-) diff --git a/app/src/main/java/com/enqualcomm/support/CoreService.java b/app/src/main/java/com/enqualcomm/support/CoreService.java index 3c723b11..f7ccdf62 100644 --- a/app/src/main/java/com/enqualcomm/support/CoreService.java +++ b/app/src/main/java/com/enqualcomm/support/CoreService.java @@ -238,14 +238,15 @@ public class CoreService extends Service { ServerHandler(CoreService param1CoreService) { this.mReference = new WeakReference(param1CoreService); } - public void onConnectionClose() { + @Override + public void onConnectionClose(String errorName) { CoreService coreService = (CoreService)this.mReference.get(); if (coreService == null) return; - ICLogger.i("onConnectionClose++ retry to connect again!"); - coreService.connectionServiceChain.processConnectionClose(coreService.connection, coreService.runtime); + ICLogger.i("onConnectionClose++ retry to connect again! Close Error "+errorName); + coreService.connectionServiceChain.processConnectionClose(coreService.connection, coreService.runtime,errorName); } - + @Override public void onConnectionOpen() { CoreService coreService = (CoreService)this.mReference.get(); if (coreService == null) diff --git a/app/src/main/java/com/enqualcomm/support/service/CheckSIM.java b/app/src/main/java/com/enqualcomm/support/service/CheckSIM.java index 6b99f328..8f6acfcb 100644 --- a/app/src/main/java/com/enqualcomm/support/service/CheckSIM.java +++ b/app/src/main/java/com/enqualcomm/support/service/CheckSIM.java @@ -91,8 +91,10 @@ public class CheckSIM extends AbstractConnectionService { intentFilter.addAction("android.intent.action.SIM_STATE_CHANGED"); (paramRuntime.getContextProxy()).context.registerReceiver(this.SimStateReceive, intentFilter); } - - public boolean onConnectionClose(Connection paramConnection, Runtime paramRuntime) { return false; } + + @Override + public boolean onConnectionClose(Connection paramConnection, Runtime paramRuntime, String ErrorMsg) { + return false; } public boolean onConnectionOpen(Connection paramConnection, Runtime paramRuntime) { return false; } diff --git a/app/src/main/java/com/enqualcomm/support/service/Deliver.java b/app/src/main/java/com/enqualcomm/support/service/Deliver.java index b60730df..e71d2246 100644 --- a/app/src/main/java/com/enqualcomm/support/service/Deliver.java +++ b/app/src/main/java/com/enqualcomm/support/service/Deliver.java @@ -347,8 +347,10 @@ public static void sendLocationMSG( String Msg){ public void onAlarmClock(Connection paramConnection, Runtime paramRuntime) {} public void onAttach(Connection paramConnection, Runtime paramRuntime) {} - - public boolean onConnectionClose(Connection paramConnection, Runtime paramRuntime) { return false; } + + @Override + public boolean onConnectionClose(Connection paramConnection, Runtime paramRuntime, String ErrorMsg) { + return false; } public boolean onConnectionOpen(Connection paramConnection, Runtime paramRuntime) { return false; } diff --git a/app/src/main/java/com/enqualcomm/support/service/Initialize.java b/app/src/main/java/com/enqualcomm/support/service/Initialize.java index 0ba8cc40..fa5e7982 100644 --- a/app/src/main/java/com/enqualcomm/support/service/Initialize.java +++ b/app/src/main/java/com/enqualcomm/support/service/Initialize.java @@ -50,8 +50,10 @@ public class Initialize extends AbstractConnectionService { } public void onAttach(Connection paramConnection, Runtime paramRuntime) { this.mInstance = SimSignalUtil.getInstance((paramRuntime.getContextProxy()).context); } - - public boolean onConnectionClose(Connection paramConnection, Runtime paramRuntime) { + + @Override + public boolean onConnectionClose(Connection paramConnection, Runtime paramRuntime, String ErrorMsg) { + initOK=false; return false; } diff --git a/app/src/main/java/com/enqualcomm/support/service/KeepAlive.java b/app/src/main/java/com/enqualcomm/support/service/KeepAlive.java index f2e6a751..be1c1bdf 100644 --- a/app/src/main/java/com/enqualcomm/support/service/KeepAlive.java +++ b/app/src/main/java/com/enqualcomm/support/service/KeepAlive.java @@ -171,13 +171,19 @@ public class KeepAlive extends AbstractConnectionService { this.mShutDownReceiver = new ShutDownReceiver(); this.mContext.registerReceiver(this.mShutDownReceiver, intentFilter); } - - public boolean onConnectionClose(Connection paramConnection, Runtime paramRuntime) { + + @Override + public boolean onConnectionClose(Connection paramConnection, Runtime paramRuntime, String ErrorMsg) { + // if (isConnected) //如果KeepAlive被关闭说明网络有问题,因此开启重试联网机制 stopResponseCheckTimer(); - CoreService.getInstance().startConnectionRetryTimer(); + if (!ErrorMsg.equals("DIS_CONNECT_BY_SERVERSIDE")){ + CoreService.getInstance().startConnectionRetryTimer(); + }else{ + ICLogger.i("服务器主动断开,IMEI不对或者命令格式错误!停止重试连接服务器,等待重启或者下一次网络重连。"); + } connectionError = true; isConnected = false; paramRuntime.setServerProtocolConnected(false); @@ -191,8 +197,7 @@ public class KeepAlive extends AbstractConnectionService { // CoreService.needLocateInAfterHeartBeat=true; return false; } - - public boolean onConnectionOpen(Connection paramConnection, Runtime paramRuntime) { + public boolean onConnectionOpen(Connection paramConnection, Runtime paramRuntime) { StringBuilder stringBuilder = new StringBuilder(); stringBuilder.append("onConnectionOpen connectionError="); diff --git a/app/src/main/java/com/enqualcomm/support/service/SynchronousTime.java b/app/src/main/java/com/enqualcomm/support/service/SynchronousTime.java index 30bb6894..b391ff81 100644 --- a/app/src/main/java/com/enqualcomm/support/service/SynchronousTime.java +++ b/app/src/main/java/com/enqualcomm/support/service/SynchronousTime.java @@ -35,8 +35,10 @@ public class SynchronousTime extends AbstractConnectionService { public void onAlarmClock(Connection paramConnection, Runtime paramRuntime) {} public void onAttach(Connection paramConnection, Runtime paramRuntime) {} - - public boolean onConnectionClose(Connection paramConnection, Runtime paramRuntime) { return this.synchronousTimeOK ^ true; } + + @Override + public boolean onConnectionClose(Connection paramConnection, Runtime paramRuntime, String ErrorMsg) { + return this.synchronousTimeOK ^ true; } @Override public boolean onConnectionOpen(Connection paramConnection, Runtime paramRuntime) { diff --git a/app/src/main/java/com/enqualcomm/support/service/base/AbstractConnectionService.java b/app/src/main/java/com/enqualcomm/support/service/base/AbstractConnectionService.java index 67383c37..4f1c0f00 100644 --- a/app/src/main/java/com/enqualcomm/support/service/base/AbstractConnectionService.java +++ b/app/src/main/java/com/enqualcomm/support/service/base/AbstractConnectionService.java @@ -21,11 +21,11 @@ public abstract class AbstractConnectionService implements ConnectionService { this.nextService.processAttach(paramConnection, paramRuntime); } - public final void processConnectionClose(Connection paramConnection, Runtime paramRuntime) { + public final void processConnectionClose(Connection paramConnection, Runtime paramRuntime,String ErrorMsg) { if (this.isDetach) return; - if (!onConnectionClose(paramConnection, paramRuntime) && this.nextService != null) - this.nextService.processConnectionClose(paramConnection, paramRuntime); + if (!onConnectionClose(paramConnection, paramRuntime,ErrorMsg) && this.nextService != null) + this.nextService.processConnectionClose(paramConnection, paramRuntime,ErrorMsg); } public final void processConnectionOpen(Connection paramConnection, Runtime paramRuntime) { diff --git a/app/src/main/java/com/enqualcomm/support/service/base/ConnectionService.java b/app/src/main/java/com/enqualcomm/support/service/base/ConnectionService.java index 09cbfba5..ffe007d5 100644 --- a/app/src/main/java/com/enqualcomm/support/service/base/ConnectionService.java +++ b/app/src/main/java/com/enqualcomm/support/service/base/ConnectionService.java @@ -5,7 +5,7 @@ import com.enqualcomm.support.utils.Connection; import com.enqualcomm.support.bean.Runtime; public interface ConnectionService extends BaseService { - boolean onConnectionClose(Connection paramConnection, Runtime paramRuntime); + boolean onConnectionClose(Connection paramConnection, Runtime paramRuntime,String ErrorMsg); boolean onConnectionOpen(Connection paramConnection, Runtime paramRuntime); diff --git a/app/src/main/java/com/enqualcomm/support/utils/ConnectionListener.java b/app/src/main/java/com/enqualcomm/support/utils/ConnectionListener.java index d86dd446..0a367f9b 100644 --- a/app/src/main/java/com/enqualcomm/support/utils/ConnectionListener.java +++ b/app/src/main/java/com/enqualcomm/support/utils/ConnectionListener.java @@ -4,7 +4,7 @@ package com.enqualcomm.support.utils; import com.enqualcomm.support.bean.StringMessage; public interface ConnectionListener { - void onConnectionClose(); + void onConnectionClose(String errorName); void onConnectionOpen(); diff --git a/app/src/main/java/com/enqualcomm/support/utils/NettyConnection.java b/app/src/main/java/com/enqualcomm/support/utils/NettyConnection.java index 9143fd5a..0d248c1c 100644 --- a/app/src/main/java/com/enqualcomm/support/utils/NettyConnection.java +++ b/app/src/main/java/com/enqualcomm/support/utils/NettyConnection.java @@ -447,9 +447,9 @@ public class NettyConnection implements Connection { if (NettyConnection.this.listener!=null){ NettyConnection.this.listener.onConnectionOpen(); } - }else if (socketStatus.name().equals("DIS_CONNECT")) { + }else if (socketStatus.name().equals("DIS_CONNECT") || socketStatus.name().equals("DIS_CONNECT_BY_SERVERSIDE")) { if (NettyConnection.this.listener!=null){ - NettyConnection.this.listener.onConnectionClose(); + NettyConnection.this.listener.onConnectionClose(socketStatus.name()); } disconnectServer(); } diff --git a/app/src/main/java/com/enqualcomm/support/utils/RxSocket.java b/app/src/main/java/com/enqualcomm/support/utils/RxSocket.java index 15489fe1..8744e76a 100644 --- a/app/src/main/java/com/enqualcomm/support/utils/RxSocket.java +++ b/app/src/main/java/com/enqualcomm/support/utils/RxSocket.java @@ -179,7 +179,7 @@ public class RxSocket { @Override public void call(Subscriber subscriber) { try { - if (socketStatus == SocketStatus.DIS_CONNECT) { + if (socketStatus == SocketStatus.DIS_CONNECT || socketStatus == SocketStatus.DIS_CONNECT_BY_SERVERSIDE) { subscriber.onNext(true); subscriber.onCompleted(); } @@ -294,7 +294,7 @@ public class RxSocket { ICLogger.log(TAG,"ReadThread:"+"start"); while (isReadThreadAlive) { //连接 - if (socketStatus == SocketStatus.DIS_CONNECT) { + if (socketStatus == SocketStatus.DIS_CONNECT || socketStatus == SocketStatus.DIS_CONNECT_BY_SERVERSIDE) { try { if (selectionKey != null) selectionKey.cancel(); socketChannel = SocketChannel.open(); @@ -352,8 +352,8 @@ public class RxSocket { if (length <= 0) { ICLogger.log( TAG, "服务器主动断开链接!"); isReadThreadAlive = false; - socketStatus = SocketStatus.DIS_CONNECT; - connectStatus.onNext(SocketStatus.DIS_CONNECT); + socketStatus = SocketStatus.DIS_CONNECT_BY_SERVERSIDE; + connectStatus.onNext(SocketStatus.DIS_CONNECT_BY_SERVERSIDE); if (socketReconnectCallback!=null) socketReconnectCallback.onFail("SocketConnectFail3"); @@ -387,6 +387,7 @@ public class RxSocket { public enum SocketStatus { DIS_CONNECT, + DIS_CONNECT_BY_SERVERSIDE, CONNECTING, CONNECTED, } -- 2.17.1