|  |  | 
 |  |  |       return instance ; | 
 |  |  |    } | 
 |  |  |  | 
 |  |  |  | 
 |  |  |    public static Integer[] info(){ | 
 |  |  |       Integer comTotalDown = 0 ;//缓存的下行命令总数 | 
 |  |  |       Integer comNoResTotalDownByOnLine = 0 ;//RTU在线,但对其下行命令未收到应答的总数 | 
 |  |  |       Integer comNoResTotalDownByOffLine = 0 ;//RTU离线,但对其下行命令未收到应答的总数 | 
 |  |  |       MidResultToRtu res ; | 
 |  |  |       TcpDownCommandObj obj ; | 
 |  |  |       Node node = cacheQueue.getFirstNode() ; | 
 |  |  |       while(node != null && node.obj != null){ | 
 |  |  |          obj = (TcpDownCommandObj)node.obj; | 
 |  |  |          res = obj.result ; | 
 |  |  |          if(!obj.onceReceivedResult){ | 
 |  |  |             comTotalDown ++ ; | 
 |  |  |             if(TcpSessionCache.isConnect(res.rtuAddr)){ | 
 |  |  |                comNoResTotalDownByOnLine ++ ; | 
 |  |  |             }else{ | 
 |  |  |                comNoResTotalDownByOffLine ++ ; | 
 |  |  |             } | 
 |  |  |          } | 
 |  |  |       } | 
 |  |  |       return new Integer[]{comTotalDown, comNoResTotalDownByOnLine, comNoResTotalDownByOffLine} ; | 
 |  |  |    } | 
 |  |  |  | 
 |  |  |    /** | 
 |  |  |     * 缓存命令 | 
 |  |  |     * @param result | 
 |  |  | 
 |  |  |             obj.onceReceivedResult = true ;//标识已经收到命令结果 | 
 |  |  |             return res ; | 
 |  |  |          }else{ | 
 |  |  |             node = node.pre ; | 
 |  |  |             node = node.next ; | 
 |  |  |          } | 
 |  |  |       } | 
 |  |  |        |