package com.dy.rtuMw3rd.tcp4Bjnl; import com.dy.common.mw.UnitAdapterInterface; import com.dy.common.mw.UnitCallbackInterface; import com.dy.common.mw.UnitInterface; import com.dy.common.util.Callback; import com.dy.rtuMw3rd.tcp4Bjnl.protocol.BjnlProtocol; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; /** * @Author: liurunyu * @Date: 2025/03/18 14:20 * @Description */ public class TcpClUnit implements UnitInterface { private static final Logger log = LogManager.getLogger(TcpClUnit.class) ; private static TcpClUnit instance = new TcpClUnit() ; public static TcpClUnitAdapter adapter ; public static TcpClUnitConfigVo confVo ; private TcpClUnit(){} ; public static TcpClUnit getInstance(){ return instance ; } @Override public void setAdapter(UnitAdapterInterface adapter) throws Exception { if(adapter == null){ throw new Exception("Tcp Client模块适配器对象不能为空!") ; } TcpClUnit.adapter = (TcpClUnitAdapter)adapter ; TcpClUnit.confVo = TcpClUnit.adapter.getConfig() ; if(TcpClUnit.confVo == null){ throw new Exception("Tcp Client模块配置对象不能为空!") ; } } @Override public void start(UnitCallbackInterface callback) throws Exception { System.out.println("Tcp Client模块成功启动"); this.doStart(); callback.call(null) ; } @Override public void stop(UnitCallbackInterface callback) throws Exception { callback.call(null); } private void doStart(){ new Thread(() -> { Exception ex ; while(true){ ex = null ; try { new TcpConnect().createSession( confVo.BjnlServerIp, confVo.BjnlServerPort, confVo.BjnlConnectTimeout, new TcpHandler(), new Callback() { @Override public void call(Object obj) { if (obj == null) { log.error("北京农林--创建网络会话返回为null"); } else { log.info("北京农林--成功创建网络连接"); Worker w = Worker.getInstance() ; w.setApikey(confVo.BjnlApikey); w.setSecretkey(confVo.BjnlSecretkey ); w.setWorkInterval(confVo.heartBeatInterval + 0L); w.start(); } } @Override public void call(Object... objs) { } @Override public void exception(Exception e) { } }); }catch (Exception e){ ex = e ; } if(ex == null){ break ; }else{ try{ Thread.sleep(100); }catch (Exception e){ } } } }).start(); } }