diff --git a/src/de/steamwar/bungeecore/BungeeCore.java b/src/de/steamwar/bungeecore/BungeeCore.java index c3bf9943..e4380001 100644 --- a/src/de/steamwar/bungeecore/BungeeCore.java +++ b/src/de/steamwar/bungeecore/BungeeCore.java @@ -90,8 +90,8 @@ public class BungeeCore extends Plugin { new BrandListener(); new Node.LocalNode(); - new Node.RemoteNode("lx", 8); - new Node.RemoteNode("az", 10); + new Node.RemoteNode("lx"); + new Node.RemoteNode("az"); commands.put("/tp", null); commands.put("/bc", null); diff --git a/src/de/steamwar/bungeecore/Node.java b/src/de/steamwar/bungeecore/Node.java index 5edcd067..cb349863 100644 --- a/src/de/steamwar/bungeecore/Node.java +++ b/src/de/steamwar/bungeecore/Node.java @@ -171,10 +171,34 @@ public abstract class Node { private final int cores; private final String remote; - public RemoteNode(String remote, int cores) { + public RemoteNode(String remote) { super(); - this.cores = cores; this.remote = remote; + + //Determin core count + Process process; + try { + process = new ProcessBuilder("ssh", remote, "nproc").start(); + if(!process.waitFor(5, TimeUnit.SECONDS)) + throw new IOException("Timeout of " + remote + " on init"); + } catch (IOException e) { + BungeeCore.get().getLogger().log(Level.SEVERE, "Could not initialize " + remote); + cores = 1; + return; + } catch (InterruptedException e) { + Thread.currentThread().interrupt(); + cores = 1; + return; + } + + int c; + try (BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(process.getInputStream()))) { + c = Integer.parseInt(bufferedReader.readLine()); + } catch (IOException e) { + BungeeCore.get().getLogger().log(Level.SEVERE, "Could not read cores of" + remote, e); + c = 1; + } + cores = c; } @Override