com.anysoft.stream.HubHandler Maven / Gradle / Ivy
package com.anysoft.stream;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
import com.anysoft.util.Factory;
import com.anysoft.util.IOTools;
import com.anysoft.util.Properties;
import com.anysoft.util.XmlTools;
/**
* 集线器
*
* @author duanyy
*
* @param
*
* @since 1.4.0
*
* @version 1.4.4 [20140917 duanyy]
* - Handler:handle和flush方法增加timestamp参数,以便进行时间同步
*
* @version 1.6.7.9 [20170201 duanyy]
* - 采用SLF4j日志框架输出日志
*/
public class HubHandler extends AbstractHandler {
/**
* handlers
*/
protected List> handlers = new ArrayList>();
protected void onHandle(data _data,long timestamp) {
for (Handler h:handlers){
if (h != null){
h.handle(_data,timestamp);
}
}
}
protected void onFlush(long timestamp) {
for (Handler h:handlers){
if (h != null){
h.flush(timestamp);
}
}
}
public void close() throws Exception{
super.close();
for (Handler h:handlers){
if (h != null){
IOTools.close(h);
}
}
handlers.clear();
}
public void report(Element root){
super.report(root);
if (handlers != null){
Document doc = root.getOwnerDocument();
for (Handler _handler:handlers){
if (_handler != null){
Element newHandler = doc.createElement(getHandlerType());
_handler.report(newHandler);
root.appendChild(newHandler);
}
}
}
}
public void report(Map json){
super.report(json);
if (handlers != null){
List