// delaySendMSG.run();\r
// mSendMSGHandler.sendEmptyMessage(1);\r
}\r
- private static boolean NeedCheckServerResponse=true;\r
- private static boolean ServerResponsed=false;\r
private static int CheckCount=0;\r
+ private static boolean checkNeedServerResponse(StringMessage cmd){\r
\r
- private static void checkNeedServerResponse(StringMessage cmd){\r
-\r
- if(cmd==null ||\r
- (cmd!=null && Config.protocol_no==Config.PROTOCOL_FZD &&\r
- (protocolAPIHelper.isCmdStr(cmd).equals("UD") || protocolAPIHelper.isCmdStr(cmd).equals("UD2")))\r
+ boolean NeedCheckServerResponse;\r
+ if(cmd!=null &&\r
+ Config.protocol_no==Config.PROTOCOL_FZD &&\r
+ (protocolAPIHelper.isCmdStr(cmd).equals("UD") || protocolAPIHelper.isCmdStr(cmd).equals("UD2"))\r
){\r
NeedCheckServerResponse=false;\r
}else{\r
NeedCheckServerResponse=true;\r
}\r
+ return NeedCheckServerResponse;\r
}\r
public static void dumpMessage(StringMessage msg){\r
- /*\r
+\r
StringBuilder sb = new StringBuilder("StringMessage ");\r
if (msg!=null) {\r
sb.append("index ").append(msg.getIndex())\r
}\r
ICLogger.i(sb.toString());\r
\r
- */\r
}\r
public static boolean getAndSendMsgFromQueue(){\r
boolean ret=false;\r
\r
StringMessage msgWait=mRuntime.getDbHelper().queryWaitCMDRecord();\r
dumpMessage(msgWait);\r
- checkNeedServerResponse(msgWait);\r
-\r
- //如果需要,且没有服务器反馈\r
- if (NeedCheckServerResponse==true && ServerResponsed==false) {\r
- //刚刚发送的包不为空,且检测次数小于3,则保留数据,进行下一次重试。\r
- //如果cmd有效,且尝试次数小于3, 没有收到反馈的情况下,可以重新插入queue进行下一次尝试!\r
- ICLogger.i("checkSrvResponse " + CheckCount + " times for " + msgWait.cmd() + " " + msgWait.isFromCache());\r
- if (msgWait.getIndex() >= 0)\r
- mRuntime.getDbHelper().updateCMDRecord(msgWait.getIndex(), 0);\r
- dumpMessage(msgWait);\r
- CheckCount++;\r
- //尝试次数大于5 ,可能是还没有发送过数据,或者超过重试次数,暂停提取queue中数据进,下次心跳再开始发送\r
- if (CheckCount > 5) {\r
- ICLogger.i("checkSrvResponse CheckCount=" + CheckCount + " Timeout or cmd is null, skip ");\r
- if (Config.LOG_TOFILE)\r
- ICLogger.logToFile("APILog", "response timeout skip! ");\r
- CheckCount = 0;\r
- if (mLock != null && mLock.isLocked())\r
- mLock.unlock();\r
- return false;\r
- }\r
+\r
+ if(msgWait!=null) {\r
+ //如果需要,且没有服务器反馈\r
+ //刚刚发送的包不为空,且检测次数小于3,则保留数据,进行下一次重试。\r
+ //如果cmd有效,且尝试次数小于3, 没有收到反馈的情况下,可以重新插入queue进行下一次尝试!\r
+ ICLogger.i("checkSrvResponse " + CheckCount + " times for " + msgWait.cmd() + " " + msgWait.isFromCache() + " index " + msgWait.getIndex());\r
+ if (msgWait.getIndex() >= 0) {\r
+ mRuntime.getDbHelper().updateCMDRecord(msgWait.getIndex(), 0);//设置为未发送\r
+ }\r
+ dumpMessage(msgWait);\r
+ CheckCount++;\r
+ //尝试次数大于5 ,可能是还没有发送过数据,或者超过重试次数,暂停提取queue中数据进,下次心跳再开始发送\r
+ if (CheckCount > 5) {\r
+ ICLogger.i("checkSrvResponse CheckCount=" + CheckCount + " Timeout or cmd is null, skip ");\r
+ if (Config.LOG_TOFILE)\r
+ ICLogger.logToFile("APILog", "response timeout skip! ");\r
+ CheckCount = 0;\r
+ if (mLock != null && mLock.isLocked())\r
+ mLock.unlock();\r
+ return false;\r
+ }\r
\r
}\r
\r
if (checkNetwork()) {\r
\r
connection.send(msgSent);\r
- //如果需要Check\r
- if (NeedCheckServerResponse==true){\r
+ //如果需要CheckResponse\r
+ if (checkNeedServerResponse(msgSent)==true){\r
ICLogger.i("checkSrvResponse "+topic+" "+cmd);\r
- ServerResponsed=false;\r
- mRuntime.getDbHelper().updateCMDRecord(msgSent.getIndex(),1);\r
+ mRuntime.getDbHelper().updateCMDRecord(msgSent.getIndex(),1); //设置为等待响应\r
}else{\r
ICLogger.i("no need checkSrvResponse "+topic+" "+cmd);\r
- ServerResponsed=false;\r
- mRuntime.getDbHelper().updateCMDRecord(msgSent.getIndex(),2);\r
+ mRuntime.getDbHelper().updateCMDRecord(msgSent.getIndex(),2); //直接设置为已经响应\r
}\r
ret=true;\r
} else {\r
//已经拿到的缓存,如果刚巧没有网络,就原路放回去\r
ICLogger.i("网络不通,不能发送!");\r
- if (msgWait.getIndex() >= 0)\r
- mRuntime.getDbHelper().updateCMDRecord(msgSent.getIndex(), 0);\r
- dumpMessage(msgWait);\r
+ if (msgSent.getIndex() >= 0) {\r
+ mRuntime.getDbHelper().updateCMDRecord(msgSent.getIndex(), 0); //设置为未发送\r
+ }\r
+ dumpMessage(msgSent);\r
ret=false;\r
}\r
}else{\r
StringMessage msgWait=mRuntime.getDbHelper().queryWaitCMDRecord();\r
dumpMessage(msgWait);\r
if (msgWait!=null)\r
- mRuntime.getDbHelper().updateCMDRecord(msgWait.getIndex(),0);\r
+ mRuntime.getDbHelper().updateCMDRecord(msgWait.getIndex(),0);//设置为未发送\r
}\r
public static void sendLocationMSG( String Msg){\r
\r
cmd=protocolAPIHelper.isCmdStr(paramStringMessage);\r
}\r
//如果需要检测是否响应。\r
- if (NeedCheckServerResponse==true){\r
-\r
- StringMessage msgWait=mRuntime.getDbHelper().queryWaitCMDRecord();\r
- dumpMessage(msgWait);\r
- if(msgWait!=null) {\r
- ICLogger.i("====== checkSrvResponse cmd "+cmd+" msg "+protocolAPIHelper.isCmdStr (msgWait));\r
- if( cmd.equals(protocolAPIHelper.isCmdStr (msgWait))){\r
- ICLogger.i("checkSrvResponse "+cmd+" "+protocolAPIHelper.isCmdStr (msgWait)+" is responsed!");\r
- ServerResponsed=true;\r
- CheckCount=0;\r
- }\r
+ StringMessage msgWait=mRuntime.getDbHelper().queryWaitCMDRecord();\r
+ dumpMessage(msgWait);\r
+ if(msgWait!=null) {\r
+ ICLogger.i("====== checkSrvResponse cmd " + cmd + " msg " + protocolAPIHelper.isCmdStr(msgWait));\r
+ if (cmd.equals(protocolAPIHelper.isCmdStr(msgWait))) {\r
+ ICLogger.i("checkSrvResponse " + cmd + " " + protocolAPIHelper.isCmdStr(msgWait) + " is responsed!");\r
+ mRuntime.getDbHelper().updateCMDRecord(msgWait.getIndex(), 2);//设置为已读\r
+ CheckCount = 0;\r
}\r
}\r
+\r
ICLogger.i("Deliver receive cmd " + paramStringMessage.cmd());\r
if (cmd.equals("SentVoicePacket") ) {\r
//收到BP07 表示服务器收到一个voicePacket 分包成功,开始检查下一个包是否存在需要发送。\r