package app.updates; import app.entities.Stats; import jakarta.annotation.PostConstruct; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.context.ApplicationContext; import org.springframework.core.annotation.Order; import org.springframework.stereotype.Component; import java.io.IOException; import java.time.Instant; import java.util.ArrayList; import java.util.List; import java.util.concurrent.Callable; import java.util.concurrent.CompletableFuture; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; @Component public class PlayersUpdater extends BaseUpdater{ Stats stats; @Value("${backend.updates.a2s}") private boolean update = false; private int timeout = 60 * 1000; private final Logger logger = LoggerFactory.getLogger(PlayersUpdater.class); @Autowired public PlayersUpdater(Stats stats) { this.stats = stats; } /* public void updateValues() { if (update) { logger.warn("Updater enabled"); if (stats.getServers().size()==0) logger.error("Not found servers to update"); stats.getServers().forEach((server_name, server) -> { CreateTaskUpdater(() -> { logger.info("Update players from: {} server", server_name); server.RefreshServerA2SData(); stats.getUpdates().merge(server_name, Instant.now().getEpochSecond(), (x, y) -> y); return null; }, timeout); }); } else { logger.warn("A2S Refresh disabled! Enable last timecheck"); if (stats.getServers().size()==0) logger.error("Not found servers to update"); stats.getServers().forEach((server_name, server) -> { CreateTaskUpdater(() -> { logger.info("Update players from: {} server", server_name); server.RefreshLastCheck(60); return null; }, 15000); }); } }*/ public void burstUpdater() { if (!update) return; ExecutorService executor = Executors.newCachedThreadPool(); List tasks = new ArrayList<>(); stats.getServers().forEach((server_name, server) -> { tasks.add((Callable) () -> { server.RefreshServerA2SData(); return null; }); }); try { executor.invokeAll(tasks); executor.shutdown(); } catch (InterruptedException err) { logger.error("Cancel burst servers update"); } } }