package com.dianping.pigeon.remoting.common.monitor.trace; import com.dianping.pigeon.util.MapUtils; /** * @author qi.yin * 2016/11/17 下午3:12. */ public class ProviderTraceRepository extends AbstractTraceRepository<ProviderMonitorData, ProviderTraceData> { public void start(ProviderMonitorData monitorData) { ProviderTraceData traceStatsData = MapUtils.getOrCreate(traceDatas, new PairKey<SourceKey, DestinationKey>(monitorData.getSrcKey(), monitorData.getDstKey()), ProviderTraceData.class); traceStatsData.incTotalCount(); } public void addData(ProviderMonitorData monitorData) { ProviderTraceData traceStatsData = MapUtils.getOrCreate(traceDatas, new PairKey<SourceKey, DestinationKey>(monitorData.getSrcKey(), monitorData.getDstKey()), ProviderTraceData.class); traceStatsData.setCallType(monitorData.getCallType()); traceStatsData.setSerialize(monitorData.getSerialize()); traceStatsData.setTimeout(monitorData.getTimeout()); } public void complete(ProviderMonitorData monitorData) { ProviderTraceData traceStatsData = MapUtils.getOrCreate(traceDatas, new PairKey<SourceKey, DestinationKey>(monitorData.getSrcKey(), monitorData.getDstKey()), ProviderTraceData.class); long elapsed = System.currentTimeMillis() - monitorData.getStartMillisTime(); traceStatsData.setElapsed(elapsed); if (monitorData.isSuccess()) { traceStatsData.incTotalSuccess(); } else { traceStatsData.incTotalFailed(); } } @Override public AbstractTraceRepository<ProviderMonitorData, ProviderTraceData> createAllTraceData() { return new ProviderTraceRepository(); } }