com.anysoft.stream.DispatchHandler 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 com.anysoft.util.DefaultProperties;
import com.anysoft.util.Factory;
import com.anysoft.util.IOTools;
import com.anysoft.util.Properties;
import com.anysoft.util.PropertiesConstants;
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 DispatchHandler extends AbstractHandler {
protected Handler[] children = null;
protected int threadCnt = 10;
protected void onHandle(data _data,long timestamp) {
if (children != null){
int idx = _data.hashCode() & Integer.MAX_VALUE % threadCnt;
if (children[idx] != null){
children[idx].handle(_data,timestamp);
}
}
}
protected void onFlush(long timestamp) {
if (children != null){
for (Handler _handler:children){
if (_handler != null){
_handler.flush(timestamp);
}
}
}
}
public void report(Element root){
super.report(root);
if (children != null){
Document doc = root.getOwnerDocument();
for (Handler _handler:children){
if (_handler != null){
Element newHandler = doc.createElement(getHandlerType());
_handler.report(newHandler);
root.appendChild(newHandler);
}
}
}
}
public void report(Map json){
super.report(json);
if (children != null){
List