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