| | |
| | | //以下实现,采用了递归调用,当队列缓存结点很多时,会产生栈溢出异常 |
| | | // |
| | | //////////////////////////////////////////////// |
| | | /** |
| | | * 处理上行数据 |
| | | */ |
| | | public Integer dealRtuComResult_() { |
| | | Node first = RtuComResultCache.getFirstQueueNode() ; |
| | | if(first != null){ |
| | | Integer count = RtuComResultCache.size() ; |
| | | Node last = RtuComResultCache.getLastQueueNode() ; |
| | | this.doDealRtuComResult_(first, last); |
| | | return count ; |
| | | } |
| | | return null ; |
| | | } |
| | | |
| | | /** |
| | | * 处理缓存的上行数据节点 |
| | | * @param first 第一个节点 |
| | | * @param last 最后一个节点 |
| | | */ |
| | | private void doDealRtuComResult_(Node first, Node last){ |
| | | if(last != null){ |
| | | //在dealNode方法中,可能要把last从队列中移除,这时last.pre为空,所以提前把last.pre取出来 |
| | | Node pre = last.pre ; |
| | | dealNode(last) ; |
| | | if(first != last){ |
| | | doDealRtuComResult_(first, pre) ; |
| | | }else{ |
| | | //停止 |
| | | } |
| | | } |
| | | } |
| | | |
| | | // /** |
| | | // * 处理上行数据 |
| | | // */ |
| | | // public Integer dealRtuComResult_() { |
| | | // Node first = RtuComResultCache.getFirstQueueNode() ; |
| | | // if(first != null){ |
| | | // Integer count = RtuComResultCache.size() ; |
| | | // Node last = RtuComResultCache.getLastQueueNode() ; |
| | | // this.doDealRtuComResult_(first, last); |
| | | // return count ; |
| | | // } |
| | | // return null ; |
| | | // } |
| | | // |
| | | // /** |
| | | // * 处理缓存的上行数据节点 |
| | | // * @param first 第一个节点 |
| | | // * @param last 最后一个节点 |
| | | // */ |
| | | // private void doDealRtuComResult_(Node first, Node last){ |
| | | // if(last != null){ |
| | | // //在dealNode方法中,可能要把last从队列中移除,这时last.pre为空,所以提前把last.pre取出来 |
| | | // Node pre = last.pre ; |
| | | // dealNode(last) ; |
| | | // if(first != last){ |
| | | // doDealRtuComResult_(first, pre) ; |
| | | // }else{ |
| | | // //停止 |
| | | // } |
| | | // } |
| | | // } |
| | | // |
| | | /** |
| | | * 处理一个节点 |
| | | * @param node 节点 |