From: snickersun Date: Thu, 19 Nov 2020 10:29:51 +0000 (+0800) Subject: release 711 X-Git-Url: http://git.snicker.com.cn/sitemap.xml?a=commitdiff_plain;h=c354d95aa3e3ab38c6a0c02c1984dd64e662f475;p=protocol_srv.git release 711 兼容重试5次丢弃数据和不丢弃数据两种盲点缓存逻辑。暂时改为默认5次丢弃数据。 有网络时重试上传5次服务器没响应则丢弃数据,没有网络不重试上传。 --- diff --git a/app/release/ICSer_V708_2011181543_release.apk b/app/release/ICSer_V711_2011191829_release.apk similarity index 78% rename from app/release/ICSer_V708_2011181543_release.apk rename to app/release/ICSer_V711_2011191829_release.apk index 121afff4..638d41eb 100644 Binary files a/app/release/ICSer_V708_2011181543_release.apk and b/app/release/ICSer_V711_2011191829_release.apk differ diff --git a/app/release/output.json b/app/release/output.json index 09f2675c..cbb93710 100644 --- a/app/release/output.json +++ b/app/release/output.json @@ -1 +1 @@ -[{"outputType":{"type":"APK"},"apkData":{"type":"MAIN","splits":[],"versionCode":708,"versionName":"2011181543","enabled":true,"outputFile":"ICSer_V708_2011181543_release.apk","fullName":"release","baseName":"release"},"path":"ICSer_V708_2011181543_release.apk","properties":{}}] \ No newline at end of file +[{"outputType":{"type":"APK"},"apkData":{"type":"MAIN","splits":[],"versionCode":711,"versionName":"2011191829","enabled":true,"outputFile":"ICSer_V711_2011191829_release.apk","fullName":"release","baseName":"release"},"path":"ICSer_V711_2011191829_release.apk","properties":{}}] \ No newline at end of file diff --git a/app/src/main/java/com/enqualcomm/support/Config.java b/app/src/main/java/com/enqualcomm/support/Config.java index 56a18d80..78215ccf 100644 --- a/app/src/main/java/com/enqualcomm/support/Config.java +++ b/app/src/main/java/com/enqualcomm/support/Config.java @@ -30,6 +30,10 @@ public class Config { public static int defaultHeartbeatCycle=5; public static int sw_release_no = -1; + + //如果重试都失败,则丢弃命令不进行盲点续传 + public static boolean discard_cmd_after_retryfailed=true; + public static boolean forceMoveCheck=true; public static boolean forceWearCheck=true; 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 6b6950ef..c96b77b4 100644 --- a/app/src/main/java/com/enqualcomm/support/service/Deliver.java +++ b/app/src/main/java/com/enqualcomm/support/service/Deliver.java @@ -214,6 +214,15 @@ public class Deliver extends AbstractConnectionService { //尝试次数大于5 ,可能是还没有发送过数据,或者超过重试次数,暂停提取queue中数据进,下次心跳再开始发送 if (CheckCount > 5) { ICLogger.i("checkSrvResponse CheckCount=" + CheckCount + " Timeout or cmd is null, skip "); + + //C5要的临时版本,去掉盲点续传。 + + if( Config.discard_cmd_after_retryfailed) { + if (msgWait.getIndex() >= 0) { + mRuntime.getDbHelper().updateCMDRecord(msgWait.getIndex(), 3);//设置为盲点不发送 + } + dumpMessage(msgWait); + } if (Config.LOG_TOFILE) ICLogger.logToFile("APILog", "response timeout skip! "); CheckCount = 0; @@ -226,7 +235,23 @@ public class Deliver extends AbstractConnectionService { StringBuilder stringBuilder = new StringBuilder(); if (checkNetwork()) { - StringMessage msgSent=mRuntime.getDbHelper().queryNotSentCMDRecord(); + StringMessage msgSent; + if( Config.discard_cmd_after_retryfailed) { + //如果可以丢弃数据,则直接查找没发送的数据即可 + msgSent = mRuntime.getDbHelper().queryNotSentCMDRecord(); + }else{ + //如果有盲点续传问题,不丢弃,则先查找丢掉的数据(重试失败的)先进行重传。 + msgSent = mRuntime.getDbHelper().queryDiscardCMDRecord(); + if(msgSent==null) { + //如果没有丢弃的数据,直接查找未发送的数据进行 + msgSent = mRuntime.getDbHelper().queryNotSentCMDRecord(); + }else{ + //有些协议需要修改,在此对数据修改后再发出。 + if (msgSent.haveSent()==3){ + //发送前,可能需要修改命令,修改后再发送。 + } + } + } dumpMessage(msgSent); if (msgSent != null) { String cmd = msgSent.isFromCache(); @@ -275,8 +300,17 @@ public class Deliver extends AbstractConnectionService { //正常应该只有一个在wait的记录,如果开机的时候,可能需要处理一下第一条记录 StringMessage msgWait=mRuntime.getDbHelper().queryWaitCMDRecord(); dumpMessage(msgWait); - if (msgWait!=null) - mRuntime.getDbHelper().updateCMDRecord(msgWait.getIndex(),0);//设置为未发送 + if (msgWait!=null) { + if( Config.discard_cmd_after_retryfailed) { + while(msgWait!=null) { + //所有缓存数据都设置为放弃发送 + mRuntime.getDbHelper().updateCMDRecord(msgWait.getIndex(), 3); + msgWait=mRuntime.getDbHelper().queryWaitCMDRecord(); + } + }else { + mRuntime.getDbHelper().updateCMDRecord(msgWait.getIndex(), 0);//设置为未发送 + } + } } public static void sendLocationMSG( String Msg){ 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 930277e5..848b2d61 100644 --- a/app/src/main/java/com/enqualcomm/support/utils/DBHelper.java +++ b/app/src/main/java/com/enqualcomm/support/utils/DBHelper.java @@ -1042,9 +1042,16 @@ public class DBHelper { ContentResolver pcr = this.cr; Uri table = ICContentProvider.PROTOCOL_CMD_RECORDS_URI; StringBuilder where = new StringBuilder(); - where.append("FLAG=2"); - ICLogger.i("delete cmdRecords have sent "); - pcr.delete(table, where.toString(), (String[])null); + where.append("FLAG>1"); + Cursor cmdrecords = pcr.query(table, (String[])null, where.toString(), (String[])null, (String)null); + if(cmdrecords!=null){ + if(cmdrecords.getCount()>500) { + pcr.delete(table, where.toString(), (String[]) null); + ICLogger.i("delete cmdRecords have sent "); + }else{ + ICLogger.i("cmdRecords less than 500 , skip delete "); + } + } } public StringMessage queryNotSentCMDRecord(){ @@ -1083,6 +1090,7 @@ public class DBHelper { return msg; } + public StringMessage queryWaitCMDRecord(){ ContentResolver pcr = this.cr; Uri table = ICContentProvider.PROTOCOL_CMD_RECORDS_URI; @@ -1120,6 +1128,41 @@ public class DBHelper { } + public StringMessage queryDiscardCMDRecord(){ + ContentResolver pcr = this.cr; + Uri table = ICContentProvider.PROTOCOL_CMD_RECORDS_URI; + StringBuilder where = new StringBuilder(); + where.append("FLAG=3"); + // ICLogger.i("Query cmdRecords "+where); + Cursor cmdrecords = pcr.query(table, (String[])null, where.toString(), (String[])null, (String)null); + StringMessage msg=null; + if (cmdrecords != null) { + int score=0; + if (cmdrecords.getCount()> 0) { + if (cmdrecords.moveToFirst()) { + String topic=cmdrecords.getString(cmdrecords.getColumnIndex("TOPIC")); + String cmd=cmdrecords.getString(cmdrecords.getColumnIndex("CMD")); + String date=cmdrecords.getString(cmdrecords.getColumnIndex("DATE")); + String time=cmdrecords.getString(cmdrecords.getColumnIndex("TIME")); + int flag=cmdrecords.getInt(cmdrecords.getColumnIndex("FLAG")); + int index=cmdrecords.getInt(cmdrecords.getColumnIndex("_id")); + + msg=new StringMessage(new String[]{topic}); + msg.refresh(cmd); + msg.setDate(date,time); + msg.setSentFlag(flag); + msg.setIndex(index); + ICLogger.i("get cmd Record discarded response _id "+index + " "+date+time+" topic "+topic+" cmd "+cmd); + } + } + cmdrecords.close(); + + if (msg==null) + ICLogger.i("no cmd record in wait status !"); + } + return msg; + } + } diff --git a/app/version_code.properties b/app/version_code.properties index acf4d839..50809848 100644 --- a/app/version_code.properties +++ b/app/version_code.properties @@ -1,2 +1,2 @@ -#Wed Nov 18 15:43:27 CST 2020 -VERSION_CODE=708 +#Thu Nov 19 18:29:05 CST 2020 +VERSION_CODE=711