Skip to content

Commit

Permalink
Add an option to space out auto-starting servers
Browse files Browse the repository at this point in the history
  • Loading branch information
ME1312 committed Jan 30, 2019
1 parent 024dde4 commit 6131790
Show file tree
Hide file tree
Showing 4 changed files with 48 additions and 11 deletions.
Expand Up @@ -68,10 +68,14 @@ public void execute(Client client, YAMLSection data) {
Server server;
if (data.contains("name") && servers.keySet().contains(data.getRawString("name").toLowerCase())) {
link(client, servers.get(data.getRawString("name").toLowerCase()));
} else if ((server = search(new InetSocketAddress(client.getAddress().getAddress(), data.getInt("port")))) != null) {
link(client, server);
} else if (data.contains("port")) {
if ((server = search(new InetSocketAddress(client.getAddress().getAddress(), data.getInt("port")))) != null) {
link(client, server);
} else {
throw new ServerLinkException("There is no server with address: " + client.getAddress().getAddress().getHostAddress() + ':' + data.getInt("port"));
}
} else {
throw new ServerLinkException("There is no server with address: " + client.getAddress().getAddress().getHostAddress() + ':' + data.getInt("port"));
throw new ServerLinkException("Not enough arguments");
}
} catch (ServerLinkException e) {
if (data.contains("name")) {
Expand All @@ -89,8 +93,12 @@ private void link(Client client, Server server) {
if (server.getSubData() == null) {
client.setHandler(server);
System.out.println("SubData > " + client.getAddress().toString() + " has been defined as " + ((server instanceof SubServer) ? "SubServer" : "Server") + ": " + server.getName());
client.sendPacket(new PacketLinkServer(server.getName(), 0, "Definition Successful"));
if (server instanceof SubServer && !((SubServer) server).isRunning()) client.sendPacket(new PacketOutReset("Rogue SubServer Detected"));
if (server instanceof SubServer && !((SubServer) server).isRunning()) {
System.out.println("SubServers > Sending shutdown signal to rogue SubServer: " + server.getName());
client.sendPacket(new PacketOutReset("Rogue SubServer Detected"));
} else {
client.sendPacket(new PacketLinkServer(server.getName(), 0, "Definition Successful"));
}
} else {
client.sendPacket(new PacketLinkServer(null, 3, "Server already linked"));
}
Expand Down
33 changes: 31 additions & 2 deletions SubServers.Bungee/src/net/ME1312/SubServers/Bungee/SubPlugin.java
Expand Up @@ -493,8 +493,6 @@ public void reload() throws IOException {
SubServer oserver = api.getSubServer(oname);
if (oserver != null && server.isCompatible(oserver)) server.toggleCompatibility(oserver);
}
if (autorun.contains(name))
server.start();
}
ukeys.clear();
api.ready = true;
Expand All @@ -520,6 +518,37 @@ public void reload() throws IOException {
}

System.out.println("SubServers > " + ((plugins > 0)?plugins+" Plugin"+((plugins == 1)?"":"s")+", ":"") + ((proxies > 1)?proxies+" Proxies, ":"") + hosts + " Host"+((hosts == 1)?"":"s")+", " + servers + " Server"+((servers == 1)?"":"s")+", and " + subservers + " SubServer"+((subservers == 1)?"":"s")+" "+((status)?"re":"")+"loaded in " + new DecimalFormat("0.000").format((Calendar.getInstance().getTime().getTime() - begin) / 1000D) + "s");

long scd = TimeUnit.SECONDS.toMillis(config.get().getSection("Settings").getLong("Run-On-Launch-Cooldown", 0L));
for (Host host : api.getHosts().values()) {
new Thread(() -> {
try {
while (running && begin == resetDate && !host.isAvailable()) {
Thread.sleep(250);
}
List<String> ar = new LinkedList<String>();
ar.addAll(autorun);
long init = Calendar.getInstance().getTime().getTime();
while (running && begin == resetDate && ar.size() > 0) {
SubServer server = host.getSubServer(ar.get(0));
ar.remove(0);
if (server != null && !server.isRunning()) {
server.start();
if (ar.size() > 0 && scd > 0) {
long sleep = Calendar.getInstance().getTime().getTime();
while (running && begin == resetDate && server.getSubData() == null && Calendar.getInstance().getTime().getTime() - sleep < scd) {
Thread.sleep(250);
}
}
}
}
if (running && begin == resetDate && Calendar.getInstance().getTime().getTime() - init >= 5000)
System.out.println("SubServers > The auto-start queue for " + host.getName() + " has been finished");
} catch (Exception e) {
e.printStackTrace();
}
}, "SubServers.Bungee::Automatic_Server_Starter(" + host.getName() + ")").start();
}
}

private void post() {
Expand Down
Expand Up @@ -12,8 +12,8 @@ public class PacketInReset implements PacketIn {

@Override
public void execute(YAMLSection data) {
if (data != null && data.contains("m")) Bukkit.getLogger().warning("SubData > Received request for a server shutdown: " + data.getString("m"));
else Bukkit.getLogger().warning("SubData > Received request for a server shutdown");
if (data != null && data.contains("m")) Bukkit.getLogger().warning("SubData > Received shutdown signal: " + data.getString("m"));
else Bukkit.getLogger().warning("SubData > Received shutdown signal");
Bukkit.shutdown();
}

Expand Down
Expand Up @@ -25,8 +25,8 @@ public PacketInReset() {

@Override
public void execute(YAMLSection data) {
if (data != null && data.contains("m")) log.warn("Received request for a server shutdown: " + data.getString("m"));
else log.warn("Received request for a server shutdown");
if (data != null && data.contains("m")) log.warn("Received shutdown signal: " + data.getString("m"));
else log.warn("Received shutdown signal");
Sponge.getServer().shutdown();
}

Expand Down

0 comments on commit 6131790

Please sign in to comment.