From 52c3169a3ccee187e1cb1b39fbeb95d3767fb07d Mon Sep 17 00:00:00 2001 From: snowleo Date: Sat, 25 Jan 2014 15:33:33 +0100 Subject: Read backup output async --- Essentials/src/com/earth2me/essentials/Backup.java | 102 ++++++++++++--------- 1 file changed, 57 insertions(+), 45 deletions(-) diff --git a/Essentials/src/com/earth2me/essentials/Backup.java b/Essentials/src/com/earth2me/essentials/Backup.java index 2e754d0f2..3c6621864 100644 --- a/Essentials/src/com/earth2me/essentials/Backup.java +++ b/Essentials/src/com/earth2me/essentials/Backup.java @@ -91,65 +91,77 @@ public class Backup implements Runnable server.dispatchCommand(cs, "save-all"); server.dispatchCommand(cs, "save-off"); - ess.runTaskAsynchronously( - new Runnable() + ess.runTaskAsynchronously(new Runnable() + { + @Override + public void run() + { + try { - @Override - public void run() + final ProcessBuilder childBuilder = new ProcessBuilder(command); + childBuilder.redirectErrorStream(true); + childBuilder.directory(ess.getDataFolder().getParentFile().getParentFile()); + final Process child = childBuilder.start(); + ess.runTaskAsynchronously(new Runnable() { - try + @Override + public void run() { - final ProcessBuilder childBuilder = new ProcessBuilder(command); - childBuilder.redirectErrorStream(true); - childBuilder.directory(ess.getDataFolder().getParentFile().getParentFile()); - final Process child = childBuilder.start(); - final BufferedReader reader = new BufferedReader(new InputStreamReader(child.getInputStream())); try { - child.waitFor(); - String line; - do + final BufferedReader reader = new BufferedReader(new InputStreamReader(child.getInputStream())); + try { - line = reader.readLine(); - if (line != null) + String line; + do { - LOGGER.log(Level.INFO, line); + line = reader.readLine(); + if (line != null) + { + LOGGER.log(Level.INFO, line); + } } + while (line != null); + } + finally + { + reader.close(); } - while (line != null); } - finally + catch (IOException ex) { - reader.close(); + LOGGER.log(Level.SEVERE, null, ex); } } - catch (InterruptedException ex) - { - LOGGER.log(Level.SEVERE, null, ex); - } - catch (IOException ex) - { - LOGGER.log(Level.SEVERE, null, ex); - } - finally + }); + child.waitFor(); + } + catch (InterruptedException ex) + { + LOGGER.log(Level.SEVERE, null, ex); + } + catch (IOException ex) + { + LOGGER.log(Level.SEVERE, null, ex); + } + finally + { + ess.scheduleSyncDelayedTask(new Runnable() + { + @Override + public void run() { - ess.scheduleSyncDelayedTask( - new Runnable() - { - @Override - public void run() - { - server.dispatchCommand(cs, "save-on"); - if (server.getOnlinePlayers().length == 0) - { - stopTask(); - } - active = false; - LOGGER.log(Level.INFO, _("backupFinished")); - } - }); + server.dispatchCommand(cs, "save-on"); + if (server.getOnlinePlayers().length == 0) + { + stopTask(); + } + active = false; + LOGGER.log(Level.INFO, _("backupFinished")); } - } - }); + }); + } + } + }); } } -- cgit v1.2.3