From ee795b7702dc2ce50d6edd44756b9a69d2ffb3be Mon Sep 17 00:00:00 2001 From: Rsl1122 Date: Sun, 31 Mar 2019 12:46:26 +0300 Subject: [PATCH] CallEvents.SERVER_PERIODICAL calls --- .../plan/system/tasks/BukkitTaskSystem.java | 32 ++++++++------ .../plan/system/tasks/BungeeTaskSystem.java | 17 ++++++-- .../ExtensionServerMethodCallerTask.java | 43 +++++++++++++++++++ .../system/settings/paths/TimeSettings.java | 1 + .../src/main/resources/bungeeconfig.yml | 2 + Plan/common/src/main/resources/config.yml | 2 + .../plan/system/tasks/SpongeTaskSystem.java | 18 +++++--- .../plan/system/tasks/VelocityTaskSystem.java | 20 ++++++--- 8 files changed, 108 insertions(+), 27 deletions(-) create mode 100644 Plan/common/src/main/java/com/djrapitops/plan/extension/ExtensionServerMethodCallerTask.java diff --git a/Plan/bukkit/src/main/java/com/djrapitops/plan/system/tasks/BukkitTaskSystem.java b/Plan/bukkit/src/main/java/com/djrapitops/plan/system/tasks/BukkitTaskSystem.java index 40b92c79b..364c53215 100644 --- a/Plan/bukkit/src/main/java/com/djrapitops/plan/system/tasks/BukkitTaskSystem.java +++ b/Plan/bukkit/src/main/java/com/djrapitops/plan/system/tasks/BukkitTaskSystem.java @@ -19,6 +19,7 @@ package com.djrapitops.plan.system.tasks; import com.djrapitops.plan.Plan; import com.djrapitops.plan.ShutdownHook; import com.djrapitops.plan.db.tasks.DBCleanTask; +import com.djrapitops.plan.extension.ExtensionServerMethodCallerTask; import com.djrapitops.plan.system.settings.config.PlanConfig; import com.djrapitops.plan.system.settings.paths.TimeSettings; import com.djrapitops.plan.system.tasks.bukkit.BukkitTPSCountTimer; @@ -50,6 +51,7 @@ public class BukkitTaskSystem extends ServerTaskSystem { private final PingCountTimerBukkit pingCountTimer; private final ConfigStoreTask configStoreTask; private final DBCleanTask dbCleanTask; + private final ExtensionServerMethodCallerTask extensionServerMethodCallerTask; @Inject public BukkitTaskSystem( @@ -65,7 +67,8 @@ public class BukkitTaskSystem extends ServerTaskSystem { LogsFolderCleanTask logsFolderCleanTask, PlayersPageRefreshTask playersPageRefreshTask, ConfigStoreTask configStoreTask, - DBCleanTask dbCleanTask + DBCleanTask dbCleanTask, + ExtensionServerMethodCallerTask extensionServerMethodCallerTask ) { super( runnableFactory, @@ -80,6 +83,7 @@ public class BukkitTaskSystem extends ServerTaskSystem { this.pingCountTimer = pingCountTimer; this.configStoreTask = configStoreTask; this.dbCleanTask = dbCleanTask; + this.extensionServerMethodCallerTask = extensionServerMethodCallerTask; } @Override @@ -88,20 +92,24 @@ public class BukkitTaskSystem extends ServerTaskSystem { try { plugin.registerListener(pingCountTimer); long startDelay = TimeAmount.toTicks(config.get(TimeSettings.PING_SERVER_ENABLE_DELAY), TimeUnit.MILLISECONDS); - registerTask("PingCountTimer", pingCountTimer) - .runTaskTimer(startDelay, 40L); - - // +40 ticks / 2 seconds so that update check task runs first. - long storeDelay = TimeAmount.toTicks(config.get(TimeSettings.CONFIG_UPDATE_INTERVAL), TimeUnit.MILLISECONDS) + 40; - registerTask("Config Store Task", configStoreTask).runTaskLaterAsynchronously(storeDelay); - - registerTask("DB Clean Task", dbCleanTask).runTaskTimerAsynchronously( - TimeAmount.toTicks(20, TimeUnit.SECONDS), - TimeAmount.toTicks(config.get(TimeSettings.CLEAN_DATABASE_PERIOD), TimeUnit.MILLISECONDS) - ); + registerTask(pingCountTimer).runTaskTimer(startDelay, 40L); } catch (ExceptionInInitializerError | NoClassDefFoundError ignore) { // Running CraftBukkit } + + // +40 ticks / 2 seconds so that update check task runs first. + long storeDelay = TimeAmount.toTicks(config.get(TimeSettings.CONFIG_UPDATE_INTERVAL), TimeUnit.MILLISECONDS) + 40; + registerTask(configStoreTask).runTaskLaterAsynchronously(storeDelay); + + registerTask(dbCleanTask).runTaskTimerAsynchronously( + TimeAmount.toTicks(20, TimeUnit.SECONDS), + TimeAmount.toTicks(config.get(TimeSettings.CLEAN_DATABASE_PERIOD), TimeUnit.MILLISECONDS) + ); + + long extensionRefreshPeriod = TimeAmount.toTicks(config.get(TimeSettings.EXTENSION_DATA_REFRESH_PERIOD), TimeUnit.MILLISECONDS); + registerTask(extensionServerMethodCallerTask).runTaskTimerAsynchronously( + TimeAmount.toTicks(30, TimeUnit.SECONDS), extensionRefreshPeriod + ); shutdownHook.register(); } diff --git a/Plan/bungeecord/src/main/java/com/djrapitops/plan/system/tasks/BungeeTaskSystem.java b/Plan/bungeecord/src/main/java/com/djrapitops/plan/system/tasks/BungeeTaskSystem.java index 84542e410..b34ead8a6 100644 --- a/Plan/bungeecord/src/main/java/com/djrapitops/plan/system/tasks/BungeeTaskSystem.java +++ b/Plan/bungeecord/src/main/java/com/djrapitops/plan/system/tasks/BungeeTaskSystem.java @@ -18,6 +18,7 @@ package com.djrapitops.plan.system.tasks; import com.djrapitops.plan.PlanBungee; import com.djrapitops.plan.db.tasks.DBCleanTask; +import com.djrapitops.plan.extension.ExtensionServerMethodCallerTask; import com.djrapitops.plan.system.settings.config.PlanConfig; import com.djrapitops.plan.system.settings.paths.TimeSettings; import com.djrapitops.plan.system.tasks.bungee.BungeeTPSCountTimer; @@ -47,6 +48,7 @@ public class BungeeTaskSystem extends TaskSystem { private final PlayersPageRefreshTask playersPageRefreshTask; private final NetworkConfigStoreTask networkConfigStoreTask; private final DBCleanTask dbCleanTask; + private final ExtensionServerMethodCallerTask extensionServerMethodCallerTask; @Inject public BungeeTaskSystem( @@ -59,7 +61,8 @@ public class BungeeTaskSystem extends TaskSystem { LogsFolderCleanTask logsFolderCleanTask, PlayersPageRefreshTask playersPageRefreshTask, NetworkConfigStoreTask networkConfigStoreTask, - DBCleanTask dbCleanTask + DBCleanTask dbCleanTask, + ExtensionServerMethodCallerTask extensionServerMethodCallerTask ) { super(runnableFactory, bungeeTPSCountTimer); this.plugin = plugin; @@ -71,6 +74,7 @@ public class BungeeTaskSystem extends TaskSystem { this.playersPageRefreshTask = playersPageRefreshTask; this.networkConfigStoreTask = networkConfigStoreTask; this.dbCleanTask = dbCleanTask; + this.extensionServerMethodCallerTask = extensionServerMethodCallerTask; } @Override @@ -85,18 +89,23 @@ public class BungeeTaskSystem extends TaskSystem { plugin.registerListener(pingCountTimer); long startDelay = TimeAmount.toTicks(config.get(TimeSettings.PING_SERVER_ENABLE_DELAY), TimeUnit.MILLISECONDS); - runnableFactory.create("PingCountTimer", pingCountTimer).runTaskTimer(startDelay, PingCountTimerBungee.PING_INTERVAL); + registerTask(pingCountTimer).runTaskTimer(startDelay, PingCountTimerBungee.PING_INTERVAL); registerTask(playersPageRefreshTask) .runTaskTimerAsynchronously(TimeAmount.toTicks(5L, TimeUnit.MINUTES), TimeAmount.toTicks(5L, TimeUnit.MINUTES)); // +40 ticks / 2 seconds so that update check task runs first. long storeDelay = TimeAmount.toTicks(config.get(TimeSettings.CONFIG_UPDATE_INTERVAL), TimeUnit.MILLISECONDS) + 40; - registerTask("Config Store Task", networkConfigStoreTask).runTaskLaterAsynchronously(storeDelay); + registerTask(networkConfigStoreTask).runTaskLaterAsynchronously(storeDelay); - registerTask("DB Clean Task", dbCleanTask).runTaskTimerAsynchronously( + registerTask(dbCleanTask).runTaskTimerAsynchronously( TimeAmount.toTicks(20, TimeUnit.SECONDS), TimeAmount.toTicks(config.get(TimeSettings.CLEAN_DATABASE_PERIOD), TimeUnit.MILLISECONDS) ); + + long extensionRefreshPeriod = TimeAmount.toTicks(config.get(TimeSettings.EXTENSION_DATA_REFRESH_PERIOD), TimeUnit.MILLISECONDS); + registerTask(extensionServerMethodCallerTask).runTaskTimerAsynchronously( + TimeAmount.toTicks(30, TimeUnit.SECONDS), extensionRefreshPeriod + ); } } diff --git a/Plan/common/src/main/java/com/djrapitops/plan/extension/ExtensionServerMethodCallerTask.java b/Plan/common/src/main/java/com/djrapitops/plan/extension/ExtensionServerMethodCallerTask.java new file mode 100644 index 000000000..3c48094cb --- /dev/null +++ b/Plan/common/src/main/java/com/djrapitops/plan/extension/ExtensionServerMethodCallerTask.java @@ -0,0 +1,43 @@ +/* + * This file is part of Player Analytics (Plan). + * + * Plan is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License v3 as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Plan is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with Plan. If not, see . + */ +package com.djrapitops.plan.extension; + +import com.djrapitops.plugin.task.AbsRunnable; + +import javax.inject.Inject; +import javax.inject.Singleton; + +/** + * Task for updating {@link DataExtension} server values periodically. + * + * @author Rsl1122 + */ +@Singleton +public class ExtensionServerMethodCallerTask extends AbsRunnable { + + private final ExtensionServiceImplementation extensionServiceImplementation; + + @Inject + public ExtensionServerMethodCallerTask(ExtensionServiceImplementation extensionServiceImplementation) { + this.extensionServiceImplementation = extensionServiceImplementation; + } + + @Override + public void run() { + extensionServiceImplementation.updateServerValues(CallEvents.SERVER_PERIODICAL); + } +} \ No newline at end of file diff --git a/Plan/common/src/main/java/com/djrapitops/plan/system/settings/paths/TimeSettings.java b/Plan/common/src/main/java/com/djrapitops/plan/system/settings/paths/TimeSettings.java index 90c46a49d..316600799 100644 --- a/Plan/common/src/main/java/com/djrapitops/plan/system/settings/paths/TimeSettings.java +++ b/Plan/common/src/main/java/com/djrapitops/plan/system/settings/paths/TimeSettings.java @@ -37,6 +37,7 @@ public class TimeSettings { public static final Setting ACTIVE_PLAY_THRESHOLD = new TimeSetting("Time.Thresholds.Activity_index.Playtime_threshold"); public static final Setting KEEP_INACTIVE_PLAYERS = new TimeSetting("Time.Thresholds.Remove_inactive_player_data_after"); public static final Setting ANALYSIS_REFRESH_PERIOD = new TimeSetting("Time.Periodic_tasks.Analysis_refresh_every"); + public static final Setting EXTENSION_DATA_REFRESH_PERIOD = new TimeSetting("Time.Periodic_tasks.Extension_data_refresh_every"); public static final Setting CLEAN_CACHE_PERIOD = new TimeSetting("Time.Periodic_tasks.Clean_caches_every"); public static final Setting CLEAN_DATABASE_PERIOD = new TimeSetting("Time.Periodic_tasks.Clean_Database_every"); public static final Setting CONFIG_UPDATE_INTERVAL = new TimeSetting("Time.Periodic_tasks.Check_DB_for_server_config_files_every"); diff --git a/Plan/common/src/main/resources/bungeeconfig.yml b/Plan/common/src/main/resources/bungeeconfig.yml index 6315ca6ea..7a1620e03 100644 --- a/Plan/common/src/main/resources/bungeeconfig.yml +++ b/Plan/common/src/main/resources/bungeeconfig.yml @@ -86,6 +86,8 @@ Time: Remove_inactive_player_data_after: 180 Unit: DAYS Periodic_tasks: + Extension_data_refresh_every: 1 + Unit: HOURS Check_DB_for_server_config_files_every: 1 Unit: MINUTES Clean_caches_every: 10 diff --git a/Plan/common/src/main/resources/config.yml b/Plan/common/src/main/resources/config.yml index 90d23af6b..09d96755a 100644 --- a/Plan/common/src/main/resources/config.yml +++ b/Plan/common/src/main/resources/config.yml @@ -93,6 +93,8 @@ Time: Periodic_tasks: Analysis_refresh_every: 60 Unit: MINUTES + Extension_data_refresh_every: 1 + Unit: HOURS Check_DB_for_server_config_files_every: 1 Unit: MINUTES Clean_caches_every: 10 diff --git a/Plan/sponge/src/main/java/com/djrapitops/plan/system/tasks/SpongeTaskSystem.java b/Plan/sponge/src/main/java/com/djrapitops/plan/system/tasks/SpongeTaskSystem.java index 517b8ec35..57acc4e88 100644 --- a/Plan/sponge/src/main/java/com/djrapitops/plan/system/tasks/SpongeTaskSystem.java +++ b/Plan/sponge/src/main/java/com/djrapitops/plan/system/tasks/SpongeTaskSystem.java @@ -19,6 +19,7 @@ package com.djrapitops.plan.system.tasks; import com.djrapitops.plan.PlanSponge; import com.djrapitops.plan.ShutdownHook; import com.djrapitops.plan.db.tasks.DBCleanTask; +import com.djrapitops.plan.extension.ExtensionServerMethodCallerTask; import com.djrapitops.plan.system.settings.config.PlanConfig; import com.djrapitops.plan.system.settings.paths.TimeSettings; import com.djrapitops.plan.system.tasks.server.BootAnalysisTask; @@ -43,6 +44,7 @@ public class SpongeTaskSystem extends ServerTaskSystem { private final PingCountTimerSponge pingCountTimer; private final ConfigStoreTask configStoreTask; private final DBCleanTask dbCleanTask; + private final ExtensionServerMethodCallerTask extensionServerMethodCallerTask; @Inject public SpongeTaskSystem( @@ -57,7 +59,8 @@ public class SpongeTaskSystem extends ServerTaskSystem { LogsFolderCleanTask logsFolderCleanTask, PlayersPageRefreshTask playersPageRefreshTask, ConfigStoreTask configStoreTask, - DBCleanTask dbCleanTask + DBCleanTask dbCleanTask, + ExtensionServerMethodCallerTask extensionServerMethodCallerTask ) { super( runnableFactory, @@ -72,6 +75,7 @@ public class SpongeTaskSystem extends ServerTaskSystem { this.pingCountTimer = pingCountTimer; this.configStoreTask = configStoreTask; this.dbCleanTask = dbCleanTask; + this.extensionServerMethodCallerTask = extensionServerMethodCallerTask; } @Override @@ -80,18 +84,22 @@ public class SpongeTaskSystem extends ServerTaskSystem { plugin.registerListener(pingCountTimer); long startDelay = TimeAmount.toTicks(config.get(TimeSettings.PING_SERVER_ENABLE_DELAY), TimeUnit.MILLISECONDS); - runnableFactory.create("PingCountTimer", pingCountTimer) - .runTaskTimer(startDelay, PingCountTimerSponge.PING_INTERVAL); + registerTask(pingCountTimer).runTaskTimer(startDelay, PingCountTimerSponge.PING_INTERVAL); // +40 ticks / 2 seconds so that update check task runs first. long storeDelay = TimeAmount.toTicks(config.get(TimeSettings.CONFIG_UPDATE_INTERVAL), TimeUnit.MILLISECONDS) + 40; - registerTask("Config Store Task", configStoreTask).runTaskLaterAsynchronously(storeDelay); + registerTask(configStoreTask).runTaskLaterAsynchronously(storeDelay); - registerTask("DB Clean Task", dbCleanTask).runTaskTimerAsynchronously( + registerTask(dbCleanTask).runTaskTimerAsynchronously( TimeAmount.toTicks(20, TimeUnit.SECONDS), TimeAmount.toTicks(config.get(TimeSettings.CLEAN_DATABASE_PERIOD), TimeUnit.MILLISECONDS) ); + long extensionRefreshPeriod = TimeAmount.toTicks(config.get(TimeSettings.EXTENSION_DATA_REFRESH_PERIOD), TimeUnit.MILLISECONDS); + registerTask(extensionServerMethodCallerTask).runTaskTimerAsynchronously( + TimeAmount.toTicks(30, TimeUnit.SECONDS), extensionRefreshPeriod + ); + shutdownHook.register(); } diff --git a/Plan/velocity/src/main/java/com/djrapitops/plan/system/tasks/VelocityTaskSystem.java b/Plan/velocity/src/main/java/com/djrapitops/plan/system/tasks/VelocityTaskSystem.java index bd09a6b07..276e47d4b 100644 --- a/Plan/velocity/src/main/java/com/djrapitops/plan/system/tasks/VelocityTaskSystem.java +++ b/Plan/velocity/src/main/java/com/djrapitops/plan/system/tasks/VelocityTaskSystem.java @@ -18,6 +18,7 @@ package com.djrapitops.plan.system.tasks; import com.djrapitops.plan.PlanVelocity; import com.djrapitops.plan.db.tasks.DBCleanTask; +import com.djrapitops.plan.extension.ExtensionServerMethodCallerTask; import com.djrapitops.plan.system.settings.config.PlanConfig; import com.djrapitops.plan.system.settings.paths.TimeSettings; import com.djrapitops.plan.system.tasks.proxy.NetworkConfigStoreTask; @@ -47,6 +48,7 @@ public class VelocityTaskSystem extends TaskSystem { private final PlayersPageRefreshTask playersPageRefreshTask; private final NetworkConfigStoreTask networkConfigStoreTask; private final DBCleanTask dbCleanTask; + private final ExtensionServerMethodCallerTask extensionServerMethodCallerTask; @Inject public VelocityTaskSystem( @@ -59,7 +61,8 @@ public class VelocityTaskSystem extends TaskSystem { LogsFolderCleanTask logsFolderCleanTask, PlayersPageRefreshTask playersPageRefreshTask, NetworkConfigStoreTask networkConfigStoreTask, - DBCleanTask dbCleanTask + DBCleanTask dbCleanTask, + ExtensionServerMethodCallerTask extensionServerMethodCallerTask ) { super(runnableFactory, velocityTPSCountTimer); this.plugin = plugin; @@ -71,6 +74,7 @@ public class VelocityTaskSystem extends TaskSystem { this.playersPageRefreshTask = playersPageRefreshTask; this.networkConfigStoreTask = networkConfigStoreTask; this.dbCleanTask = dbCleanTask; + this.extensionServerMethodCallerTask = extensionServerMethodCallerTask; } @Override @@ -85,18 +89,22 @@ public class VelocityTaskSystem extends TaskSystem { plugin.registerListener(pingCountTimer); long startDelay = TimeAmount.toTicks(config.get(TimeSettings.PING_SERVER_ENABLE_DELAY), TimeUnit.MILLISECONDS); - runnableFactory.create("PingCountTimer", pingCountTimer).runTaskTimer(startDelay, PingCountTimerVelocity.PING_INTERVAL); + registerTask(pingCountTimer).runTaskTimer(startDelay, PingCountTimerVelocity.PING_INTERVAL); - registerTask(playersPageRefreshTask) - .runTaskTimerAsynchronously(TimeAmount.toTicks(5L, TimeUnit.MINUTES), TimeAmount.toTicks(5L, TimeUnit.MINUTES)); + registerTask(playersPageRefreshTask).runTaskTimerAsynchronously(TimeAmount.toTicks(5L, TimeUnit.MINUTES), TimeAmount.toTicks(5L, TimeUnit.MINUTES)); // +40 ticks / 2 seconds so that update check task runs first. long storeDelay = TimeAmount.toTicks(config.get(TimeSettings.CONFIG_UPDATE_INTERVAL), TimeUnit.MILLISECONDS) + 40; - registerTask("Config Store Task", networkConfigStoreTask).runTaskLaterAsynchronously(storeDelay); + registerTask(networkConfigStoreTask).runTaskLaterAsynchronously(storeDelay); - registerTask("DB Clean Task", dbCleanTask).runTaskTimerAsynchronously( + registerTask(dbCleanTask).runTaskTimerAsynchronously( TimeAmount.toTicks(20, TimeUnit.SECONDS), TimeAmount.toTicks(config.get(TimeSettings.CLEAN_DATABASE_PERIOD), TimeUnit.MILLISECONDS) ); + + long extensionRefreshPeriod = TimeAmount.toTicks(config.get(TimeSettings.EXTENSION_DATA_REFRESH_PERIOD), TimeUnit.MILLISECONDS); + registerTask(extensionServerMethodCallerTask).runTaskTimerAsynchronously( + TimeAmount.toTicks(30, TimeUnit.SECONDS), extensionRefreshPeriod + ); } }