package com.limegroup.gnutella.downloader; import java.util.HashMap; import java.util.concurrent.atomic.AtomicInteger; import com.google.inject.Singleton; @Singleton public class DownloadStatsTrackerImpl implements DownloadStatsTracker { private HashMap<PushReason, AtomicInteger> pushReasonStats = new HashMap<PushReason, AtomicInteger>(); private AtomicInteger directConnectSuccess; private AtomicInteger directConnectFail; private AtomicInteger pushConnectSuccess; private AtomicInteger pushConnectFail; public DownloadStatsTrackerImpl() { directConnectSuccess = new AtomicInteger(0); directConnectFail = new AtomicInteger(0); pushConnectSuccess = new AtomicInteger(0); pushConnectFail = new AtomicInteger(0); for(PushReason reason : PushReason.values()) { pushReasonStats.put(reason, new AtomicInteger(0)); } } public void successfulDirectConnect() { directConnectSuccess.incrementAndGet(); } public void failedDirectConnect() { directConnectFail.incrementAndGet(); } public void successfulPushConnect() { pushConnectSuccess.incrementAndGet(); } public void failedPushConnect() { pushConnectFail.incrementAndGet(); } public void increment(PushReason reason) { if(reason != null) { pushReasonStats.get(reason).incrementAndGet(); } } }