\r
private static boolean checkNetwork(){\r
boolean ret=true;\r
- int signal=mRuntime.getSignalStrength();\r
- int networkType=SimSignalUtil.getInstance((mRuntime.getContextProxy()).context).getNetworkType();\r
- if (signal + 110 < getMinSignalStrength(networkType)) {\r
- ICLogger.i("Skip Send for SignalStrengh "+(signal + 110 )+" < "+getMinSignalStrength(networkType));\r
- //如果信号不好,把msg放回去\r
- ret=false;\r
- } else {\r
+ boolean dateConnectionLinked=SimSignalUtil.checkNet(mRuntime.getContextProxy().context);\r
+\r
+ if (dateConnectionLinked) {\r
+// int signal = mRuntime.getSignalStrength();\r
+// int networkType = SimSignalUtil.getInstance((mRuntime.getContextProxy()).context).getNetworkType();\r
+// if (signal + 110 < getMinSignalStrength(networkType)) {\r
+// ICLogger.i("Skip Send for SignalStrengh " + (signal + 110) + " < " + getMinSignalStrength(networkType));\r
+// //如果信号不好,把msg放回去\r
+// ret = false;\r
+// }\r
if (connection.isServerConnected() == false || !mRuntime.isServerProtocolConnected()) {\r
- ret=false;\r
+ ICLogger.i("服务器无法访问,或者协议状态失常");\r
+ ret = false;\r
}\r
+ }else{\r
+ ICLogger.i("数据网络没有连接");\r
+ ret=false;\r
}\r
return ret;\r
}\r
ret=true;\r
} else {\r
//已经拿到的缓存,如果刚巧没有网络,就原路放回去\r
- ServiceUtil.offerQueue(stringMessage,true);\r
+ ICLogger.i("网络不通,不能发送!");\r
+ if (!ServiceUtil.offerQueue(stringMessage,true)){\r
+ ICLogger.i("MessageQueue 已满,数据将被丢弃!"+ stringMessage);\r
+ if (Config.LOG_TOFILE) FileOutputUtil.fileOutput(mRuntime.getCacheDir(), "APILog", " queueFullskip! " + stringMessage);\r
+ }\r
ret=false;\r
}\r
}else{\r
str = "no message!\n";\r
}\r
ICLogger.i("send cached cmd : \n"+str);\r
- ICLogger.i("\n"+queue.size()+" left in Queue!");\r
+ ICLogger.i("\n"+queue.size()+" in Queue!");\r
}finally {\r
if(mLock!=null && mLock.isLocked())\r
mLock.unlock();\r
}\r
return ret;\r
}\r
- private static void loadMessage2Queue() {\r
- byte b = 0;\r
- //一次只处理5条数据\r
- while (b < 5) {\r
- String str = fileCache.load();\r
- if (str != null) {\r
- byte b1 = ++b;\r
-\r
- try {\r
- StringMessage stringMessage = new StringMessage(str);\r
- //如果在queue中添加失败,则写回cache中\r
- if (!queue.offerLast(stringMessage)) {\r
- fileCache.put(str);\r
- }\r
- } catch (Exception e) {\r
- e.printStackTrace();\r
- }\r
- }\r
- }\r
- }\r
- public static void saveQueue() {\r
- lock.lock();\r
- try {\r
- String str;\r
- if (!queue.isEmpty()) {\r
- StringBuilder stringBuilder = new StringBuilder();\r
- StringMessage stringMessage = queue.poll();\r
- while (stringMessage != null) {\r
- String cmd=stringMessage.isFromCache();\r
- stringBuilder.append(cmd);\r
- stringBuilder.append("\n");\r
- fileCache.put(cmd);\r
- stringMessage = queue.poll();\r
- }\r
- str = stringBuilder.toString();\r
- } else {\r
- str = null;\r
- }\r
- ICLogger.i("save queue to cache : \n"+str);\r
- lock.unlock();\r
- return;\r
- } finally {\r
- if (lock!=null &&lock.isLocked())\r
- lock.unlock();\r
- }\r
- }\r
+// private static void loadMessage2Queue() {\r
+// byte b = 0;\r
+// //一次只处理5条数据\r
+// while (b < 5) {\r
+// String str = fileCache.load();\r
+// if (str != null) {\r
+// byte b1 = ++b;\r
+//\r
+// try {\r
+// StringMessage stringMessage = new StringMessage(str);\r
+// //如果在queue中添加失败,则写回cache中\r
+// if (!queue.offerLast(stringMessage)) {\r
+//// fileCache.put(str);\r
+// }\r
+// } catch (Exception e) {\r
+// e.printStackTrace();\r
+// }\r
+// }\r
+// }\r
+// }\r
+// public static void saveQueue() {\r
+// lock.lock();\r
+// try {\r
+// String str;\r
+// if (!queue.isEmpty()) {\r
+// StringBuilder stringBuilder = new StringBuilder();\r
+// StringMessage stringMessage = queue.poll();\r
+// while (stringMessage != null) {\r
+// String cmd=stringMessage.isFromCache();\r
+// stringBuilder.append(cmd);\r
+// stringBuilder.append("\n");\r
+//// fileCache.put(cmd);\r
+// stringMessage = queue.poll();\r
+// }\r
+// str = stringBuilder.toString();\r
+// } else {\r
+// str = null;\r
+// }\r
+// ICLogger.i("save queue to cache : \n"+str);\r
+// lock.unlock();\r
+// return;\r
+// } finally {\r
+// if (lock!=null &&lock.isLocked())\r
+// lock.unlock();\r
+// }\r
+// }\r
\r
\r
public static void sendLocationMSG( String Msg){\r
\r
if(mRuntime.getUseQueue()){\r
- ServiceUtil.offerQueue(protocolAPIHelper.genStringMessage("queue",Msg));\r
+ if(!ServiceUtil.offerQueue(protocolAPIHelper.genStringMessage("queue",Msg))) {\r
+ ICLogger.i(" MessageQueue 已满,数据将被丢弃," + Msg);\r
+ if (Config.LOG_TOFILE) FileOutputUtil.fileOutput(mRuntime.getCacheDir(), "APILog", " queueFullskip " + Msg);\r
+\r
+ }\r
triggerSendThread();\r
+\r
}else {\r
if (checkNetwork()) {\r
ICLogger.i(" first send " + Msg);\r
\r
public class ServiceUtil {\r
\r
- public static void offerQueue(StringMessage paramStringMessage) {\r
- offerQueue(paramStringMessage, false);\r
+ public static boolean offerQueue(StringMessage paramStringMessage) {\r
+ return offerQueue(paramStringMessage, false);\r
}\r
\r
- public static void offerQueue(StringMessage paramStringMessage, boolean paramBoolean) {\r
+ public static boolean offerQueue(StringMessage paramStringMessage, boolean paramBoolean) {\r
if (paramBoolean) {\r
if (!Deliver.queue.offerFirst(paramStringMessage)) {\r
- Deliver.saveQueue();\r
- Deliver.queue.offerFirst(paramStringMessage);\r
- return;\r
+// Deliver.saveQueue();\r
+// Deliver.queue.offerFirst(paramStringMessage);\r
+ return false;\r
} \r
} else if (!Deliver.queue.offerLast(paramStringMessage)) {\r
- Deliver.saveQueue();\r
- Deliver.queue.offerLast(paramStringMessage);\r
- } \r
+// Deliver.saveQueue();\r
+// Deliver.queue.offerLast(paramStringMessage);\r
+ return false;\r
+ }\r
+ return true;\r
}\r
\r
\r