package com.dianping.pigeon.remoting.common.monitor.trace;
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.ConcurrentMap;
/**
* @author qi.yin
* 2016/11/17 下午3:15.
*/
public abstract class AbstractTraceRepository<M extends MonitorData, T extends AbstractTraceData> implements TraceRepository<M> {
protected volatile ConcurrentMap<PairKey<SourceKey, DestinationKey>, T> traceDatas =
new ConcurrentHashMap<PairKey<SourceKey, DestinationKey>, T>();
public AbstractTraceRepository() {
}
@Override
public void reset() {
this.traceDatas = new ConcurrentHashMap<PairKey<SourceKey, DestinationKey>, T>();
}
@Override
public TraceRepository copy() {
AbstractTraceRepository<M,T> allTraceData = createAllTraceData();
allTraceData.setTraceDatas(traceDatas);
return allTraceData;
}
public abstract AbstractTraceRepository<M,T> createAllTraceData();
public ConcurrentMap<PairKey<SourceKey, DestinationKey>, T> getTraceDatas() {
return traceDatas;
}
public void setTraceDatas(ConcurrentMap<PairKey<SourceKey, DestinationKey>, T> traceDatas) {
this.traceDatas = traceDatas;
}
}