@Override public void run() { long time = System.currentTimeMillis(); Iterator<Map.Entry<UUID, List<DateObj<Integer>>>> iterator = playerHistory.entrySet().iterator(); while (iterator.hasNext()) { Map.Entry<UUID, List<DateObj<Integer>>> entry = iterator.next(); UUID uuid = entry.getKey(); List<DateObj<Integer>> history = entry.getValue(); Player player = Bukkit.getPlayer(uuid); if (player != null) { int ping = getPing(player); if (ping < -1 || ping > TimeUnit.SECONDS.toMillis(8L)) { // Don't accept bad values continue; } history.add(new DateObj<>(time, ping)); if (history.size() >= 30) { processing.submit(processors.player().pingInsertProcessor(uuid, new ArrayList<>(history))); history.clear(); } } else { iterator.remove(); } } }
@Override public void enable() { if (Check.isBukkitAvailable() && connectionSystem.isServerAvailable()) { return; } if (config.isTrue(ExportSettings.JS_AND_CSS)) { processing.submitNonCritical(htmlExport::exportJs); processing.submitNonCritical(htmlExport::exportCss); processing.submitNonCritical(htmlExport::exportPlugins); } if (config.isTrue(ExportSettings.PLAYERS_PAGE)) { processing.submitNonCritical(htmlExport::exportPlayersPage); } if (config.isTrue(ExportSettings.PLAYER_PAGES)) { processing.submitNonCritical(htmlExport::exportAvailablePlayers); } if (config.isTrue(ExportSettings.SERVER_PAGE)) { processing.submitNonCritical(htmlExport::exportAvailableServerPages); } }
public <T> Future<T> submit(Callable<T> task) { if (task instanceof CriticalCallable) { return submitCritical(task); } return submitNonCritical(task); }
private void runInspectTask(String playerName, Sender sender) { processing.submitNonCritical(() -> { try { UUID uuid = uuidUtility.getUUIDOf(playerName); if (uuid == null) { sender.sendMessage(locale.getString(CommandLang.FAIL_USERNAME_NOT_VALID)); return; } if (!dbSystem.getDatabase().check().isPlayerRegistered(uuid)) { sender.sendMessage(locale.getString(CommandLang.FAIL_USERNAME_NOT_KNOWN)); return; } checkWebUserAndNotify(sender); processing.submit(processorFactory.inspectCacheRequestProcessor(uuid, sender, playerName, this::sendInspectMsg)); } catch (DBOpException e) { sender.sendMessage("§eDatabase exception occurred: " + e.getMessage()); errorHandler.log(L.ERROR, this.getClass(), e); } }); }
private void runBackupTask(Sender sender, String[] args, Database database) { processing.submitCritical(() -> { try { sender.sendMessage(locale.getString(ManageLang.PROGRESS_START)); createNewBackup(args[0], database); sender.sendMessage(locale.getString(ManageLang.PROGRESS_SUCCESS)); } catch (Exception e) { errorHandler.log(L.ERROR, ManageBackupCommand.class, e); sender.sendMessage(locale.getString(ManageLang.PROGRESS_FAIL, e.getMessage())); } }); }
private void runRestoreTask(String backupDbName, Sender sender, Database database) { processing.submitCritical(() -> { try { boolean containsDBFileExtension = backupDbName.endsWith(".db"); File backupDBFile = files.getFileFromPluginFolder(backupDbName + (containsDBFileExtension ? "" : ".db")); if (!backupDBFile.exists()) { sender.sendMessage(locale.getString(ManageLang.FAIL_FILE_NOT_FOUND, backupDBFile.getAbsolutePath())); return; } SQLiteDB backupDB = sqliteFactory.usingFile(backupDBFile); backupDB.init(); sender.sendMessage(locale.getString(ManageLang.PROGRESS_START)); database.backup().restore(backupDB); sender.sendMessage(locale.getString(ManageLang.PROGRESS_SUCCESS)); } catch (Exception e) { errorHandler.log(L.ERROR, this.getClass(), e); sender.sendMessage(locale.getString(ManageLang.PROGRESS_FAIL, e.getMessage())); } }); } }
@Override public void run() { try { long nanoTime = System.nanoTime(); long now = System.currentTimeMillis(); addNewTPSEntry(nanoTime, now); if (history.size() >= 60) { processing.submit(processors.tpsInsertProcessor(new ArrayList<>(history))); history.clear(); } } catch (Exception | NoClassDefFoundError | NoSuchMethodError | NoSuchFieldError e) { logger.error("TPS Count Task Disabled due to error, reload Plan to re-enable."); errorHandler.log(L.ERROR, this.getClass(), e); cancel(); } }
private void refreshServerMap() { processing.submitNonCritical(() -> { if (latestServerMapRefresh < System.currentTimeMillis() - TimeUnit.SECONDS.toMillis(15L)) { FetchOperations fetch = dbSystem.getDatabase().fetch(); mainServer = fetch.getBungeeInformation().orElse(null); bukkitServers = fetch.getBukkitServers(); latestServerMapRefresh = System.currentTimeMillis(); } }); }
public void submit(Runnable runnable) { if (runnable instanceof CriticalRunnable) { submitCritical(runnable); return; } submitNonCritical(runnable); }
private void runClearTask(Sender sender, Database database) { processing.submitCritical(() -> { try { sender.sendMessage(locale.getString(ManageLang.PROGRESS_START)); database.remove().everything(); sender.sendMessage(locale.getString(ManageLang.PROGRESS_SUCCESS)); } catch (DBOpException e) { sender.sendMessage(locale.getString(ManageLang.PROGRESS_FAIL, e.getMessage())); errorHandler.log(L.ERROR, this.getClass(), e); } }); } }
@Override public void run() { long time = System.currentTimeMillis(); Iterator<Map.Entry<UUID, List<DateObj<Integer>>>> iterator = playerHistory.entrySet().iterator(); while (iterator.hasNext()) { Map.Entry<UUID, List<DateObj<Integer>>> entry = iterator.next(); UUID uuid = entry.getKey(); List<DateObj<Integer>> history = entry.getValue(); Optional<Player> player = Sponge.getServer().getPlayer(uuid); if (player.isPresent()) { int ping = getPing(player.get()); if (ping < -1 || ping > TimeUnit.SECONDS.toMillis(8L)) { // Don't accept bad values continue; } history.add(new DateObj<>(time, ping)); if (history.size() >= 30) { processing.submit(processors.player().pingInsertProcessor(uuid, new ArrayList<>(history))); history.clear(); } } else { iterator.remove(); } } }
private void cache(UUID uuid, String html) { ResponseCache.cacheResponse(PageId.PLAYER.of(uuid), () -> new InspectPageResponse(uuid, html)); if (config.get(ExportSettings.PLAYER_PAGES)) { processing.submitNonCritical(() -> htmlExport.exportPlayer(uuid)); } if (config.get(ExportSettings.PLAYER_JSON)) { processing.submitNonCritical(() -> jsonExport.exportPlayerJSON(uuid)); } }
private void runMoveTask(final Database fromDatabase, final Database toDatabase, Sender sender) { processing.submitCritical(() -> { try { sender.sendMessage(locale.getString(ManageLang.PROGRESS_START)); fromDatabase.backup().backup(toDatabase); sender.sendMessage(locale.getString(ManageLang.PROGRESS_SUCCESS)); boolean movingToCurrentDB = toDatabase.getType() == dbSystem.getDatabase().getType(); if (movingToCurrentDB) { sender.sendMessage(locale.getString(ManageLang.HOTSWAP_REMINDER, toDatabase.getType().getConfigName())); } } catch (Exception e) { errorHandler.log(L.ERROR, this.getClass(), e); sender.sendMessage(locale.getString(ManageLang.PROGRESS_FAIL, e.getMessage())); } }); } }
@Override public void run() { long time = System.currentTimeMillis(); Iterator<Map.Entry<UUID, List<DateObj<Integer>>>> iterator = playerHistory.entrySet().iterator(); while (iterator.hasNext()) { Map.Entry<UUID, List<DateObj<Integer>>> entry = iterator.next(); UUID uuid = entry.getKey(); List<DateObj<Integer>> history = entry.getValue(); Player player = plugin.getProxy().getPlayer(uuid).orElse(null); if (player != null) { int ping = getPing(player); if (ping < -1 || ping > TimeUnit.SECONDS.toMillis(8L)) { // Don't accept bad values continue; } history.add(new DateObj<>(time, ping)); if (history.size() >= 30) { processing.submit(processors.player().pingInsertProcessor(uuid, new ArrayList<>(history))); history.clear(); } } else { iterator.remove(); } } }
private void cache(UUID serverUUID, String html) { ResponseCache.cacheResponse(PageId.SERVER.of(serverUUID), () -> new AnalysisPageResponse(html)); if (!networkUUID.equals(serverUUID)) { ResponseCache.clearResponse(PageId.SERVER.of(networkUUID)); } if (config.get(ExportSettings.SERVER_PAGE)) { processing.submitNonCritical(() -> htmlExport.exportServer(serverUUID)); } if (config.get(ExportSettings.SERVER_JSON)) { processing.submitNonCritical(() -> jsonExport.exportServerJSON(serverUUID)); } }
private void actOnJoinEvent(ClientConnectionEvent.Join event) { Player player = event.getTargetEntity(); UUID uuid = player.getUniqueId(); long time = System.currentTimeMillis(); SpongeAFKListener.AFK_TRACKER.performedAction(uuid, time); String world = player.getWorld().getName(); Optional<GameMode> gameMode = player.getGameModeData().get(Keys.GAME_MODE); String gm = gameMode.map(mode -> mode.getName().toUpperCase()).orElse("ADVENTURE"); InetAddress address = player.getConnection().getAddress().getAddress(); String playerName = player.getName(); String displayName = player.getDisplayNameData().displayName().get().toPlain(); boolean gatheringGeolocations = config.isTrue(DataGatheringSettings.GEOLOCATIONS); processing.submitCritical(() -> sessionCache.cacheSession(uuid, new Session(uuid, serverInfo.getServerUUID(), time, world, gm))); runnableFactory.create("Player Register: " + uuid, processors.player().registerProcessor(uuid, () -> time, playerName, gatheringGeolocations ? processors.player().ipUpdateProcessor(uuid, address, time) : null, processors.player().nameProcessor(uuid, playerName, displayName), processors.info().playerPageUpdateProcessor(uuid) ) ).runTaskAsynchronously(); }
@Override public void run() { long time = System.currentTimeMillis(); Iterator<Map.Entry<UUID, List<DateObj<Integer>>>> iterator = playerHistory.entrySet().iterator(); while (iterator.hasNext()) { Map.Entry<UUID, List<DateObj<Integer>>> entry = iterator.next(); UUID uuid = entry.getKey(); List<DateObj<Integer>> history = entry.getValue(); ProxiedPlayer player = ProxyServer.getInstance().getPlayer(uuid); if (player != null) { int ping = getPing(player); if (ping < -1 || ping > TimeUnit.SECONDS.toMillis(8L)) { // Don't accept bad values continue; } history.add(new DateObj<>(time, ping)); if (history.size() >= 30) { processing.submit(processors.player().pingInsertProcessor(uuid, new ArrayList<>(history))); history.clear(); } } else { iterator.remove(); } } }
@Override public void onCommand(Sender sender, String commandLabel, String[] args) { if (!webServer.isEnabled()) { sender.sendMessage(locale.getString(CommandLang.CONNECT_WEBSERVER_NOT_ENABLED)); return; } processing.submitNonCritical(() -> testServers(sender)); }
private void registerUser(WebUser webUser, Sender sender) { processing.submitCritical(() -> { String userName = webUser.getName(); try { Database database = dbSystem.getDatabase(); boolean userExists = database.check().doesWebUserExists(userName); if (userExists) { sender.sendMessage(locale.getString(CommandLang.FAIL_WEB_USER_EXISTS)); return; } database.save().webUser(webUser); sender.sendMessage(locale.getString(CommandLang.WEB_USER_REGISTER_SUCCESS, userName)); logger.info(locale.getString(CommandLang.WEB_USER_REGISTER_NOTIFY, userName, webUser.getPermLevel())); } catch (Exception e) { errorHandler.log(L.WARN, this.getClass(), e); } }); } }
private void actOnQuitEvent(PlayerQuitEvent event) { long time = System.currentTimeMillis(); Player player = event.getPlayer(); UUID uuid = player.getUniqueId(); AFKListener.AFK_TRACKER.loggedOut(uuid, time); processing.submit(processors.player().banAndOpProcessor(uuid, player::isBanned, player.isOp())); processing.submit(processors.player().endSessionProcessor(uuid, time)); processing.submit(processors.info().playerPageUpdateProcessor(uuid)); } }