From 390f437e505102d898ec60295c8e17ab93d7d814 Mon Sep 17 00:00:00 2001 From: snickersun Date: Mon, 16 Nov 2020 13:08:46 +0800 Subject: [PATCH] =?utf8?q?=E4=BF=AE=E5=A4=8DDeliver=E7=9A=84=E7=9B=B2?= =?utf8?q?=E7=82=B9=E8=A1=A5=E4=BC=A0=E4=B8=8A=E4=BC=A0=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- .../enqualcomm/support/service/Deliver.java | 97 +++++++++---------- .../enqualcomm/support/utils/DBHelper.java | 2 +- 2 files changed, 47 insertions(+), 52 deletions(-) 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 09182eef..6811bd30 100644 --- a/app/src/main/java/com/enqualcomm/support/service/Deliver.java +++ b/app/src/main/java/com/enqualcomm/support/service/Deliver.java @@ -149,23 +149,22 @@ public class Deliver extends AbstractConnectionService { // delaySendMSG.run(); // mSendMSGHandler.sendEmptyMessage(1); } - private static boolean NeedCheckServerResponse=true; - private static boolean ServerResponsed=false; private static int CheckCount=0; + private static boolean checkNeedServerResponse(StringMessage cmd){ - private static void checkNeedServerResponse(StringMessage cmd){ - - if(cmd==null || - (cmd!=null && Config.protocol_no==Config.PROTOCOL_FZD && - (protocolAPIHelper.isCmdStr(cmd).equals("UD") || protocolAPIHelper.isCmdStr(cmd).equals("UD2"))) + boolean NeedCheckServerResponse; + if(cmd!=null && + Config.protocol_no==Config.PROTOCOL_FZD && + (protocolAPIHelper.isCmdStr(cmd).equals("UD") || protocolAPIHelper.isCmdStr(cmd).equals("UD2")) ){ NeedCheckServerResponse=false; }else{ NeedCheckServerResponse=true; } + return NeedCheckServerResponse; } public static void dumpMessage(StringMessage msg){ - /* + StringBuilder sb = new StringBuilder("StringMessage "); if (msg!=null) { sb.append("index ").append(msg.getIndex()) @@ -176,7 +175,6 @@ public class Deliver extends AbstractConnectionService { } ICLogger.i(sb.toString()); - */ } public static boolean getAndSendMsgFromQueue(){ boolean ret=false; @@ -195,27 +193,27 @@ public class Deliver extends AbstractConnectionService { StringMessage msgWait=mRuntime.getDbHelper().queryWaitCMDRecord(); dumpMessage(msgWait); - checkNeedServerResponse(msgWait); - - //如果需要,且没有服务器反馈 - if (NeedCheckServerResponse==true && ServerResponsed==false) { - //刚刚发送的包不为空,且检测次数小于3,则保留数据,进行下一次重试。 - //如果cmd有效,且尝试次数小于3, 没有收到反馈的情况下,可以重新插入queue进行下一次尝试! - ICLogger.i("checkSrvResponse " + CheckCount + " times for " + msgWait.cmd() + " " + msgWait.isFromCache()); - if (msgWait.getIndex() >= 0) - mRuntime.getDbHelper().updateCMDRecord(msgWait.getIndex(), 0); - dumpMessage(msgWait); - CheckCount++; - //尝试次数大于5 ,可能是还没有发送过数据,或者超过重试次数,暂停提取queue中数据进,下次心跳再开始发送 - if (CheckCount > 5) { - ICLogger.i("checkSrvResponse CheckCount=" + CheckCount + " Timeout or cmd is null, skip "); - if (Config.LOG_TOFILE) - ICLogger.logToFile("APILog", "response timeout skip! "); - CheckCount = 0; - if (mLock != null && mLock.isLocked()) - mLock.unlock(); - return false; - } + + if(msgWait!=null) { + //如果需要,且没有服务器反馈 + //刚刚发送的包不为空,且检测次数小于3,则保留数据,进行下一次重试。 + //如果cmd有效,且尝试次数小于3, 没有收到反馈的情况下,可以重新插入queue进行下一次尝试! + ICLogger.i("checkSrvResponse " + CheckCount + " times for " + msgWait.cmd() + " " + msgWait.isFromCache() + " index " + msgWait.getIndex()); + if (msgWait.getIndex() >= 0) { + mRuntime.getDbHelper().updateCMDRecord(msgWait.getIndex(), 0);//设置为未发送 + } + dumpMessage(msgWait); + CheckCount++; + //尝试次数大于5 ,可能是还没有发送过数据,或者超过重试次数,暂停提取queue中数据进,下次心跳再开始发送 + if (CheckCount > 5) { + ICLogger.i("checkSrvResponse CheckCount=" + CheckCount + " Timeout or cmd is null, skip "); + if (Config.LOG_TOFILE) + ICLogger.logToFile("APILog", "response timeout skip! "); + CheckCount = 0; + if (mLock != null && mLock.isLocked()) + mLock.unlock(); + return false; + } } @@ -233,23 +231,22 @@ public class Deliver extends AbstractConnectionService { if (checkNetwork()) { connection.send(msgSent); - //如果需要Check - if (NeedCheckServerResponse==true){ + //如果需要CheckResponse + if (checkNeedServerResponse(msgSent)==true){ ICLogger.i("checkSrvResponse "+topic+" "+cmd); - ServerResponsed=false; - mRuntime.getDbHelper().updateCMDRecord(msgSent.getIndex(),1); + mRuntime.getDbHelper().updateCMDRecord(msgSent.getIndex(),1); //设置为等待响应 }else{ ICLogger.i("no need checkSrvResponse "+topic+" "+cmd); - ServerResponsed=false; - mRuntime.getDbHelper().updateCMDRecord(msgSent.getIndex(),2); + mRuntime.getDbHelper().updateCMDRecord(msgSent.getIndex(),2); //直接设置为已经响应 } ret=true; } else { //已经拿到的缓存,如果刚巧没有网络,就原路放回去 ICLogger.i("网络不通,不能发送!"); - if (msgWait.getIndex() >= 0) - mRuntime.getDbHelper().updateCMDRecord(msgSent.getIndex(), 0); - dumpMessage(msgWait); + if (msgSent.getIndex() >= 0) { + mRuntime.getDbHelper().updateCMDRecord(msgSent.getIndex(), 0); //设置为未发送 + } + dumpMessage(msgSent); ret=false; } }else{ @@ -272,7 +269,7 @@ public class Deliver extends AbstractConnectionService { StringMessage msgWait=mRuntime.getDbHelper().queryWaitCMDRecord(); dumpMessage(msgWait); if (msgWait!=null) - mRuntime.getDbHelper().updateCMDRecord(msgWait.getIndex(),0); + mRuntime.getDbHelper().updateCMDRecord(msgWait.getIndex(),0);//设置为未发送 } public static void sendLocationMSG( String Msg){ @@ -365,19 +362,17 @@ public class Deliver extends AbstractConnectionService { cmd=protocolAPIHelper.isCmdStr(paramStringMessage); } //如果需要检测是否响应。 - if (NeedCheckServerResponse==true){ - - StringMessage msgWait=mRuntime.getDbHelper().queryWaitCMDRecord(); - dumpMessage(msgWait); - if(msgWait!=null) { - ICLogger.i("====== checkSrvResponse cmd "+cmd+" msg "+protocolAPIHelper.isCmdStr (msgWait)); - if( cmd.equals(protocolAPIHelper.isCmdStr (msgWait))){ - ICLogger.i("checkSrvResponse "+cmd+" "+protocolAPIHelper.isCmdStr (msgWait)+" is responsed!"); - ServerResponsed=true; - CheckCount=0; - } + StringMessage msgWait=mRuntime.getDbHelper().queryWaitCMDRecord(); + dumpMessage(msgWait); + if(msgWait!=null) { + ICLogger.i("====== checkSrvResponse cmd " + cmd + " msg " + protocolAPIHelper.isCmdStr(msgWait)); + if (cmd.equals(protocolAPIHelper.isCmdStr(msgWait))) { + ICLogger.i("checkSrvResponse " + cmd + " " + protocolAPIHelper.isCmdStr(msgWait) + " is responsed!"); + mRuntime.getDbHelper().updateCMDRecord(msgWait.getIndex(), 2);//设置为已读 + CheckCount = 0; } } + ICLogger.i("Deliver receive cmd " + paramStringMessage.cmd()); if (cmd.equals("SentVoicePacket") ) { //收到BP07 表示服务器收到一个voicePacket 分包成功,开始检查下一个包是否存在需要发送。 diff --git a/app/src/main/java/com/enqualcomm/support/utils/DBHelper.java b/app/src/main/java/com/enqualcomm/support/utils/DBHelper.java index bffb700f..8e560d54 100644 --- a/app/src/main/java/com/enqualcomm/support/utils/DBHelper.java +++ b/app/src/main/java/com/enqualcomm/support/utils/DBHelper.java @@ -1069,7 +1069,7 @@ public class DBHelper { msg.setDate(date,time); msg.setSentFlag(flag); msg.setIndex(index); - ICLogger.i("get cmd Record not sent response _id "+index + " "+date+time+" topic "+topic+" cmd "+cmd); + ICLogger.i("get cmd Record not sent _id "+index + " "+date+time+" topic "+topic+" cmd "+cmd); } } -- 2.17.1