package com.dy.testClient.tcpClient;
|
|
import com.dy.common.mw.UnitAdapterInterface;
|
import com.dy.common.mw.UnitInterface;
|
import com.dy.common.mw.UnitStartedCallbackInterface;
|
import com.dy.common.threadPool.ThreadPool;
|
import com.dy.common.threadPool.TreadPoolFactory;
|
import com.dy.testClient.ServerProperties;
|
import com.dy.testClient.rmiClient.RmiClUnit;
|
import org.apache.logging.log4j.LogManager;
|
import org.apache.logging.log4j.Logger;
|
|
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 static ThreadPool.Pool pool ;
|
|
private static Integer totalRunedClientCount = 0;
|
private static Integer totalOverClientCount = 0;
|
|
private static Long startTime = 0L ;
|
|
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(UnitStartedCallbackInterface callback) throws Exception {
|
pool = TreadPoolFactory.getThreadPoolLong() ;
|
System.out.println("Tcp Client模块成功启动");
|
this.doStart();
|
callback.call(null) ;
|
}
|
|
@Override
|
public void stop(UnitStartedCallbackInterface callback) throws Exception {
|
callback.call(null);
|
}
|
|
private void doStart(){
|
new Thread(new Runnable(){
|
@Override
|
public void run() {
|
try {
|
while(true){
|
if(!ServerProperties.startWork){
|
Thread.sleep(100L);
|
}else{
|
startTime = System.currentTimeMillis() ;
|
for(Long addr = ServerProperties.rtuAddrStart; addr <= ServerProperties.rtuAddrEnd; addr++){
|
totalRunedClientCount++ ;
|
startClient(addr) ;
|
}
|
while(true){
|
if(totalOverClientCount.longValue() >= totalRunedClientCount.longValue()){
|
Long seconds = (System.currentTimeMillis() - startTime)/1000 ;
|
RmiClUnit.getInstance().reportHadReportOver(seconds) ;
|
System.out.println("共用时" + seconds + "秒");
|
break ;
|
}else{
|
Thread.sleep(100L);
|
}
|
}
|
break;
|
}
|
}
|
} catch (Exception e) {
|
e.printStackTrace();
|
}
|
}
|
}).start();
|
}
|
|
private void startClient(Long rtuAddr){
|
try {
|
pool.putJob(new MyThreadJob("" + rtuAddr));
|
} catch (Exception e) {
|
log.error("TcpClUnit.startClient() ", e);
|
}
|
}
|
|
|
public static synchronized void clientOver(){
|
totalOverClientCount++;
|
if(totalOverClientCount % 100 == 0){
|
RmiClUnit.getInstance().reportHadReportCount(totalOverClientCount);
|
System.out.println("已经发送" + totalOverClientCount * + "条数据");
|
}
|
}
|
}
|