summaryrefslogtreecommitdiffstats
path: root/Essentials/src/com/earth2me/essentials/Backup.java
diff options
context:
space:
mode:
authorKHobbits <rob@khobbits.co.uk>2013-04-13 23:10:01 +0100
committerKHobbits <rob@khobbits.co.uk>2013-04-13 23:10:09 +0100
commit79cbcd6b00c4d9ecdca24e1231a7836a9f45e2fd (patch)
tree9cc56da5b4c8b065d760e13d4d5bd13c4de356e2 /Essentials/src/com/earth2me/essentials/Backup.java
parent13baa68ec6c4d38a0893b225cd20933d161d340a (diff)
downloadEssentials-79cbcd6b00c4d9ecdca24e1231a7836a9f45e2fd.tar
Essentials-79cbcd6b00c4d9ecdca24e1231a7836a9f45e2fd.tar.gz
Essentials-79cbcd6b00c4d9ecdca24e1231a7836a9f45e2fd.tar.lz
Essentials-79cbcd6b00c4d9ecdca24e1231a7836a9f45e2fd.tar.xz
Essentials-79cbcd6b00c4d9ecdca24e1231a7836a9f45e2fd.zip
Check threading on backup init.
Diffstat (limited to 'Essentials/src/com/earth2me/essentials/Backup.java')
-rw-r--r--Essentials/src/com/earth2me/essentials/Backup.java32
1 files changed, 23 insertions, 9 deletions
diff --git a/Essentials/src/com/earth2me/essentials/Backup.java b/Essentials/src/com/earth2me/essentials/Backup.java
index d4f0f20ee..7c8f29aec 100644
--- a/Essentials/src/com/earth2me/essentials/Backup.java
+++ b/Essentials/src/com/earth2me/essentials/Backup.java
@@ -25,16 +25,33 @@ public class Backup implements Runnable
server = ess.getServer();
if (server.getOnlinePlayers().length > 0)
{
- startTask();
+ ess.runTaskAsynchronously(new Runnable()
+ {
+ @Override
+ public void run()
+ {
+ startTask();
+ }
+ });
}
}
- void onPlayerJoin()
+ public void onPlayerJoin()
{
startTask();
}
- private void startTask()
+ public void cleanup()
+ {
+ running = false;
+ if (taskId != -1)
+ {
+ server.getScheduler().cancelTask(taskId);
+ }
+ taskId = -1;
+ }
+
+ private synchronized void startTask()
{
if (!running)
{
@@ -61,7 +78,8 @@ public class Backup implements Runnable
{
return;
}
- if ("save-all".equalsIgnoreCase(command)) {
+ if ("save-all".equalsIgnoreCase(command))
+ {
final CommandSender cs = server.getConsoleSender();
server.dispatchCommand(cs, "save-all");
active = false;
@@ -123,11 +141,7 @@ public class Backup implements Runnable
server.dispatchCommand(cs, "save-on");
if (server.getOnlinePlayers().length == 0)
{
- running = false;
- if (taskId != -1)
- {
- server.getScheduler().cancelTask(taskId);
- }
+ cleanup();
}
active = false;
LOGGER.log(Level.INFO, _("backupFinished"));