package de.jackwhite20.comix.tasks; import de.jackwhite20.comix.Comix; import de.jackwhite20.comix.strategy.BalancingStrategy; import de.jackwhite20.comix.util.TargetData; import java.util.*; /** * Created by JackWhite20 on 20.07.2015. */ public class CheckTargets extends TimerTask { private BalancingStrategy balancingStrategy; private List<TargetData> offlineTargets = Collections.synchronizedList(new ArrayList<>()); public CheckTargets(BalancingStrategy balancingStrategy) { this.balancingStrategy = balancingStrategy; } @Override public void run() { Iterator<TargetData> iterator = balancingStrategy.getTargets().iterator(); while (iterator.hasNext()) { TargetData targetData = iterator.next(); if(!targetData.isAvailable()) { iterator.remove(); offlineTargets.add(targetData); Comix.getLogger().info(targetData.getName() + " went offline!"); } } Iterator<TargetData> offlineIterator = offlineTargets.iterator(); while (offlineIterator.hasNext()) { TargetData offlineTargetData = offlineIterator.next(); if(offlineTargetData.isAvailable()) { offlineIterator.remove(); balancingStrategy.addTarget(offlineTargetData); Comix.getLogger().info(offlineTargetData.getName() + " is back online!"); } } } }