package com.dy.aceMw.server.rtuData;
|
|
import com.dy.common.queue.NodeObj;
|
import com.dy.common.threadPool.ThreadPool;
|
import com.dy.common.threadPool.TreadPoolFactory;
|
import org.apache.logging.log4j.LogManager;
|
import org.apache.logging.log4j.Logger;
|
|
public class RtuDataNode implements NodeObj {
|
|
private static final Logger log = LogManager.getLogger(RtuDataNode.class.getName());
|
|
public Object obj ;//数据
|
|
public RtuDataNode(Object obj){
|
this.obj = obj ;
|
}
|
/**
|
* 自己处理自己
|
* @return
|
*/
|
public boolean dealSelf(){
|
try {
|
ThreadPool.Pool pool = TreadPoolFactory.getThreadPoolLong() ;
|
pool.putJob(new ThreadPool.Job() {
|
public void execute() {
|
if(obj != null){
|
TaskSurpport task = null ;
|
try{
|
task = TaskPool.popTask() ;
|
if(task != null){
|
task.execute(obj);
|
}else{
|
log.error("未得到RTU主动上报数据处理任务!");
|
}
|
}catch(Exception e){
|
if(task != null){
|
//当有异常时,try catch中的代码可没有执行freeAndCleanTask
|
TaskPool.freeAndCleanTask(task);
|
}
|
}
|
}
|
}
|
@Override
|
public void destroy(){
|
}
|
@Override
|
public boolean isDestroy(){
|
return false ;
|
}
|
|
});
|
} catch (Exception e) {
|
log.error("在RtuDataNode内发生异常", e);
|
}
|
return true ;
|
}
|
|
|
}
|