From 7f5d914898c9d05942705ce7d80c0d14a8174df8 Mon Sep 17 00:00:00 2001 From: liurunyu <lry9898@163.com> Date: 星期二, 19 十二月 2023 15:57:14 +0800 Subject: [PATCH] 1、common模块优化代码; 2、通信中间件优化代码,队列遍历由递归调用改为while循环,原因是队列数据量大时递归调易产生栈溢出,HashTable多线程应用时仍有线程安全问题,改为HashMap+同步锁; 3、RTU模拟器和模拟器控制服务增加report命令 --- pipIrr-platform/pipIrr-mw/pipIrr-mwTest-client/src/main/java/com/dy/testClient/rmiClient/RmiClUnit.java | 95 ++++++++++++++++++++++++++++++++++++++--------- 1 files changed, 76 insertions(+), 19 deletions(-) diff --git a/pipIrr-platform/pipIrr-mw/pipIrr-mwTest-client/src/main/java/com/dy/testClient/rmiClient/RmiClUnit.java b/pipIrr-platform/pipIrr-mw/pipIrr-mwTest-client/src/main/java/com/dy/testClient/rmiClient/RmiClUnit.java index e383670..fa47cd9 100644 --- a/pipIrr-platform/pipIrr-mw/pipIrr-mwTest-client/src/main/java/com/dy/testClient/rmiClient/RmiClUnit.java +++ b/pipIrr-platform/pipIrr-mw/pipIrr-mwTest-client/src/main/java/com/dy/testClient/rmiClient/RmiClUnit.java @@ -86,7 +86,7 @@ RmiRequestVo rqVo = new RmiRequestVo() ; rqVo.id = id ; rqVo.token = token ; - rqVo.code = Code.cd4 ; + rqVo.code = Code.cd5; rqVo.count = count ; String json = rqVo.toJson() ; frmWork.syncRequest(json) ; @@ -102,7 +102,7 @@ RmiRequestVo rqVo = new RmiRequestVo() ; rqVo.id = id ; rqVo.token = token ; - rqVo.code = Code.cd5 ; + rqVo.code = Code.cd6; rqVo.overCount = count ; String json = rqVo.toJson() ; frmWork.syncRequest(json) ; @@ -119,7 +119,7 @@ RmiRequestVo rqVo = new RmiRequestVo() ; rqVo.id = id ; rqVo.token = token ; - rqVo.code = Code.cd6 ; + rqVo.code = Code.cd7; rqVo.over = true ; rqVo.seconds = seconds ; String json = rqVo.toJson() ; @@ -238,13 +238,14 @@ } } if(!error){ - getStart(frmWork) ; + getStartTcpConnect(frmWork) ; } } - //浠巑wTestServer寰楀埌寮�濮嬩笂鎶ユ暟鎹殑璇峰厑璁� - private void getStart(RmiFrameWork frmWork){ - log.info("绛夊緟鏈嶅姟绔厑璁镐笂鎶ユ暟鎹�"); + //浠巑wTestServer寰楀埌寮�濮婽CP杩炴帴鐨勮鍏佽 + private void getStartTcpConnect(RmiFrameWork frmWork){ + log.info("绛夊緟鏈嶅姟绔厑璁哥綉缁滆繛鎺�"); + boolean error = false ; while(true){ try { Thread.sleep(100L); @@ -255,37 +256,93 @@ String json = rqVo.toJson() ; Object rObj = frmWork.syncRequest(json) ; if(rObj != null){ - RmiResponseVo rspVo = RmiResponseVo.jsonToObject(String.valueOf(rObj), ResStartVo.class) ; + RmiResponseVo rspVo = RmiResponseVo.jsonToObject(String.valueOf(rObj), ResStartTcpConnectVo.class) ; if(rspVo != null){ if(rspVo.success){ - if(rspVo.obj != null && rspVo.obj instanceof ResStartVo){ - ResStartVo rVo = (ResStartVo)rspVo.obj ; + if(rspVo.obj != null && rspVo.obj instanceof ResStartTcpConnectVo){ + ResStartTcpConnectVo rVo = (ResStartTcpConnectVo)rspVo.obj ; if(rVo != null){ if(rVo.start){ - ServerProperties.startWork = true ; - log.info("鍏佽涓婃姤鏁版嵁宸ヤ綔浜�( ^_^ )"); + ServerProperties.startTcpConnectWork = true ; + log.info("鍏佽TCP缃戠粶杩炴帴浜�( ^_^ )"); + error = false ; break ; } }else{ - log.error("rmi璇锋眰鍚姩澶辫触锛歫son杞琑esStartVo涓簄ull"); + error = true ; + log.error("rmi璇锋眰TCP缃戠粶杩炴帴澶辫触锛歫son杞琑esStartTcpConnectVo涓簄ull"); } }else{ - log.error("rmi璇锋眰鍚姩澶辫触锛氭湇鍔$杩斿洖ResStartVo涓簄ull"); + error = true ; + log.error("rmi璇锋眰TCP缃戠粶杩炴帴澶辫触锛氭湇鍔$杩斿洖ResStartTcpConnectVo涓簄ull"); } }else{ - log.error("rmi璇锋眰鍚姩澶辫触锛氭湇鍔$杩斿洖閿欒锛�" + rspVo.errorInfo); + error = true ; + log.error("rmi璇锋眰TCP缃戠粶杩炴帴澶辫触锛氭湇鍔$杩斿洖閿欒锛�" + rspVo.errorInfo); } }else{ - log.error("rmi璇锋眰鍚姩澶辫触锛氭湇鍔$杩斿洖鐨凴miResponseVo涓簄ull"); + error = true ; + log.error("rmi璇锋眰TCP缃戠粶杩炴帴澶辫触锛氭湇鍔$杩斿洖鐨凴miResponseVo涓簄ull"); } }else{ - log.error("rmi璇锋眰鍚姩澶辫触锛氭湇鍔$杩斿洖json涓簄ull"); + error = true ; + log.error("rmi璇锋眰TCP缃戠粶杩炴帴澶辫触锛氭湇鍔$杩斿洖json涓簄ull"); } } catch (Exception e) { - log.error("rmi璇锋眰鍚姩澶辫触" + e.getMessage()); + error = true ; + log.error("rmi璇锋眰TCP缃戠粶杩炴帴澶辫触" + e.getMessage()); + continue ; + } + } + if(!error){ + getStartRtuReport(frmWork) ; + } + } + + //浠巑wTestServer寰楀埌寮�濮婻TU涓婃姤鏁版嵁鐨勮鍏佽 + private void getStartRtuReport(RmiFrameWork frmWork){ + log.info("绛夊緟鏈嶅姟绔厑璁镐笂鎶ユ暟鎹�"); + while(true){ + try { + Thread.sleep(100L); + RmiRequestVo rqVo = new RmiRequestVo() ; + rqVo.id = id ; + rqVo.token = token ; + rqVo.code = Code.cd4 ; + String json = rqVo.toJson() ; + Object rObj = frmWork.syncRequest(json) ; + if(rObj != null){ + RmiResponseVo rspVo = RmiResponseVo.jsonToObject(String.valueOf(rObj), ResStartRtuReportVo.class) ; + if(rspVo != null){ + if(rspVo.success){ + if(rspVo.obj != null && rspVo.obj instanceof ResStartRtuReportVo){ + ResStartRtuReportVo rVo = (ResStartRtuReportVo)rspVo.obj ; + if(rVo != null){ + if(rVo.report){ + ServerProperties.startRtuReportWork = true ; + log.info("鍏佽RTU涓婃姤鏁版嵁宸ヤ綔浜�( ^_^ )"); + break ; + } + }else{ + log.error("rmi璇锋眰Rtu涓婃姤鏁版嵁澶辫触锛歫son杞琑esStartRtuReportVo涓簄ull"); + } + }else{ + log.error("rmi璇锋眰Rtu涓婃姤鏁版嵁澶辫触锛氭湇鍔$杩斿洖ResStartRtuReportVo涓簄ull"); + } + }else{ + log.error("rmi璇锋眰Rtu涓婃姤鏁版嵁澶辫触锛氭湇鍔$杩斿洖閿欒锛�" + rspVo.errorInfo); + } + }else{ + log.error("rmi璇锋眰Rtu涓婃姤鏁版嵁澶辫触锛氭湇鍔$杩斿洖鐨凴miResponseVo涓簄ull"); + } + }else{ + log.error("rmi璇锋眰Rtu涓婃姤鏁版嵁澶辫触锛氭湇鍔$杩斿洖json涓簄ull"); + } + } catch (Exception e) { + log.error("rmi璇锋眰Rtu涓婃姤鏁版嵁澶辫触" + e.getMessage()); continue ; } } } - + } \ No newline at end of file -- Gitblit v1.8.0