Skip to content

Commit

Permalink
Minor API efficiency improvements
Browse files Browse the repository at this point in the history
  • Loading branch information
ME1312 committed Apr 8, 2021
1 parent eba5e6a commit ff82fd5
Show file tree
Hide file tree
Showing 21 changed files with 83 additions and 67 deletions.
4 changes: 2 additions & 2 deletions SubServers.Bungee/common/pom.xml
Expand Up @@ -28,13 +28,13 @@
<dependency>
<groupId>net.ME1312.Galaxi</groupId>
<artifactId>GalaxiUtil</artifactId>
<version>21w15a</version>
<version>21w15b</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>net.ME1312.Galaxi</groupId>
<artifactId>GalaxiEngine</artifactId>
<version>21w15a</version>
<version>21w15b</version>
<scope>provided</scope>
</dependency>
</dependencies>
Expand Down
4 changes: 2 additions & 2 deletions SubServers.Bungee/pom.xml
Expand Up @@ -28,14 +28,14 @@
<dependency>
<groupId>net.ME1312.Galaxi</groupId>
<artifactId>GalaxiUtil</artifactId>
<version>21w15a</version>
<version>21w15b</version>
<scope>compile</scope>
<optional>true</optional>
</dependency>
<dependency>
<groupId>net.ME1312.Galaxi</groupId>
<artifactId>GalaxiEngine</artifactId>
<version>21w15a</version>
<version>21w15b</version>
<scope>provided</scope>
</dependency>
<dependency>
Expand Down
Expand Up @@ -12,6 +12,7 @@
*/
public class Executable {
private Executable() {}
private static final boolean USE_SESSION_TRACKING;

/**
* Format a command to be executed
Expand All @@ -30,14 +31,22 @@ public static String[] parse(String gitbash, String exec) {
exec = '"' + gitbash + ((gitbash.endsWith(File.separator))?"":File.separator) + "bin" + File.separatorChar + "sh.exe\" -lc \"" +
exec.replace("\\", "/\\").replace("\"", "\\\"").replace("^", "^^").replace("%", "^%").replace("&", "^&").replace("<", "^<").replace(">", "^>").replace("|", "^|") + '"';
cmd = new String[]{"cmd.exe", "/q", "/c", '"'+exec+'"'};
} else if (Platform.getSystem() == Platform.LINUX) {
} else if (USE_SESSION_TRACKING) {
cmd = new String[]{"setsid", "-w", "sh", "-lc", exec};
} else {
cmd = new String[]{"sh", "-lc", exec};
}
return cmd;
}

static {
USE_SESSION_TRACKING = Platform.getSystem() != Platform.WINDOWS && Util.getDespiteException(() -> {
Process test = Runtime.getRuntime().exec(new String[]{"setsid", "-w", "bash", "-c", "exit 0"});
test.waitFor(); // The purpose of this block is to test for the 'setsid' command
return test.exitValue() == 0;
}, false);
}

/**
* Get the PID of a currently running process
*
Expand Down Expand Up @@ -88,7 +97,7 @@ public static void terminate(Process process) {
if (pid != null) try {
if (Platform.getSystem() == Platform.WINDOWS) {
Runtime.getRuntime().exec(new String[]{"taskkill.exe", "/T", "/F", "/PID", pid.toString()}).waitFor();
} else if (Platform.getSystem() == Platform.LINUX) {
} else if (USE_SESSION_TRACKING) {
Runtime.getRuntime().exec(new String[]{"bash", "-c", "kill -9 $(ps -o pid= --sid $(ps -o sid= --pid " + pid + "))"}).waitFor();
}
} catch (IOException | InterruptedException e) {}
Expand Down
Expand Up @@ -70,11 +70,11 @@ public ExternalHost(SubProxy plugin, String name, boolean enabled, Range<Integer

@Override
public DataClient[] getSubData() {
LinkedList<Integer> keys = new LinkedList<Integer>(subdata.keySet());
LinkedList<SubDataClient> channels = new LinkedList<SubDataClient>();
Collections.sort(keys);
for (Integer channel : keys) channels.add(subdata.get(channel));
return channels.toArray(new DataClient[0]);
Integer[] keys = subdata.keySet().toArray(new Integer[0]);
DataClient[] channels = new DataClient[keys.length];
Arrays.sort(keys);
for (int i = 0; i < keys.length; ++i) channels[i] = subdata.get(keys[i]);
return channels;
}

public void setSubData(DataClient client, int channel) {
Expand Down
Expand Up @@ -44,11 +44,11 @@ public Proxy(String name, boolean persistent) throws IllegalArgumentException {

@Override
public DataClient[] getSubData() {
LinkedList<Integer> keys = new LinkedList<Integer>(subdata.keySet());
LinkedList<SubDataClient> channels = new LinkedList<SubDataClient>();
Collections.sort(keys);
for (Integer channel : keys) channels.add(subdata.get(channel));
return channels.toArray(new DataClient[0]);
Integer[] keys = subdata.keySet().toArray(new Integer[0]);
DataClient[] channels = new DataClient[keys.length];
Arrays.sort(keys);
for (int i = 0; i < keys.length; ++i) channels[i] = subdata.get(keys[i]);
return channels;
}

@SuppressWarnings("deprecation")
Expand Down
Expand Up @@ -82,11 +82,11 @@ private void init(String name, SocketAddress address, String motd, boolean hidde

@Override
public DataClient[] getSubData() {
LinkedList<Integer> keys = new LinkedList<Integer>(subdata.keySet());
LinkedList<SubDataClient> channels = new LinkedList<SubDataClient>();
Collections.sort(keys);
for (Integer channel : keys) channels.add(subdata.get(channel));
return channels.toArray(new DataClient[0]);
Integer[] keys = subdata.keySet().toArray(new Integer[0]);
DataClient[] channels = new DataClient[keys.length];
Arrays.sort(keys);
for (int i = 0; i < keys.length; ++i) channels[i] = subdata.get(keys[i]);
return channels;
}

public void setSubData(DataClient client, int channel) {
Expand Down
2 changes: 1 addition & 1 deletion SubServers.Client/Bukkit/pom.xml
Expand Up @@ -46,7 +46,7 @@
<dependency>
<groupId>net.ME1312.Galaxi</groupId>
<artifactId>GalaxiUtil</artifactId>
<version>21w15a</version>
<version>21w15b</version>
<scope>compile</scope>
<optional>true</optional>
</dependency>
Expand Down
Expand Up @@ -71,11 +71,11 @@ public String getName() {
* @return SubData Network Connections
*/
public DataClient[] getSubDataNetwork() {
LinkedList<Integer> keys = new LinkedList<Integer>(plugin.subdata.keySet());
LinkedList<SubDataClient> channels = new LinkedList<SubDataClient>();
Collections.sort(keys);
for (Integer channel : keys) channels.add(plugin.subdata.get(channel));
return channels.toArray(new DataClient[0]);
Integer[] keys = plugin.subdata.keySet().toArray(new Integer[0]);
DataClient[] channels = new DataClient[keys.length];
Arrays.sort(keys);
for (int i = 0; i < keys.length; ++i) channels[i] = plugin.subdata.get(keys[i]);
return channels;
}

/**
Expand Down
Expand Up @@ -87,7 +87,6 @@ public void onEnable() {
getServer().getMessenger().registerOutgoingPluginChannel(this, "BungeeCord");
reload(false);

subdata.put(0, null);
subprotocol = SubProtocol.get();
subprotocol.registerCipher("DHE", DHE.get(128));
subprotocol.registerCipher("DHE-128", DHE.get(128));
Expand Down
2 changes: 1 addition & 1 deletion SubServers.Client/Common/pom.xml
Expand Up @@ -18,7 +18,7 @@
<dependency>
<groupId>net.ME1312.Galaxi</groupId>
<artifactId>GalaxiUtil</artifactId>
<version>21w15a</version>
<version>21w15b</version>
<scope>provided</scope>
</dependency>
<dependency>
Expand Down
Expand Up @@ -88,11 +88,11 @@ public void refresh() {
public DataSender[] getSubData() {
if (raw.contains("subdata")) {
ObjectMap<Integer> subdata = new ObjectMap<Integer>((Map<Integer, ?>) raw.getObject("subdata"));
LinkedList<Integer> keys = new LinkedList<Integer>(subdata.getKeys());
LinkedList<SubDataSender> channels = new LinkedList<SubDataSender>();
Collections.sort(keys);
for (Integer channel : keys) channels.add((subdata.isNull(channel))?null:new ForwardedDataSender((SubDataClient) ClientAPI.getInstance().getSubDataNetwork()[0], subdata.getUUID(channel)));
return channels.toArray(new SubDataSender[0]);
Integer[] keys = subdata.getKeys().toArray(new Integer[0]);
DataSender[] channels = new DataSender[keys.length];
Arrays.sort(keys);
for (int i = 0; i < keys.length; ++i) channels[i] = (subdata.isNull(keys[i]))? null : new ForwardedDataSender((SubDataClient) ClientAPI.getInstance().getSubDataNetwork()[0], subdata.getUUID(keys[i]));
return channels;
} else {
return new SubDataSender[0];
}
Expand Down
Expand Up @@ -78,11 +78,11 @@ public void refresh() {
@SuppressWarnings("unchecked")
public DataSender[] getSubData() {
ObjectMap<Integer> subdata = new ObjectMap<Integer>((Map<Integer, ?>) raw.getObject("subdata"));
LinkedList<Integer> keys = new LinkedList<Integer>(subdata.getKeys());
LinkedList<SubDataSender> channels = new LinkedList<SubDataSender>();
Collections.sort(keys);
for (Integer channel : keys) channels.add((subdata.isNull(channel))?null:new ForwardedDataSender((SubDataClient) ClientAPI.getInstance().getSubDataNetwork()[0], subdata.getUUID(channel)));
return channels.toArray(new SubDataSender[0]);
Integer[] keys = subdata.getKeys().toArray(new Integer[0]);
DataSender[] channels = new DataSender[keys.length];
Arrays.sort(keys);
for (int i = 0; i < keys.length; ++i) channels[i] = (subdata.isNull(keys[i]))? null : new ForwardedDataSender((SubDataClient) ClientAPI.getInstance().getSubDataNetwork()[0], subdata.getUUID(keys[i]));
return channels;
}

/**
Expand Down
Expand Up @@ -78,11 +78,11 @@ public void refresh() {
@SuppressWarnings("unchecked")
public DataSender[] getSubData() {
ObjectMap<Integer> subdata = new ObjectMap<Integer>((Map<Integer, ?>) raw.getObject("subdata"));
LinkedList<Integer> keys = new LinkedList<Integer>(subdata.getKeys());
LinkedList<SubDataSender> channels = new LinkedList<SubDataSender>();
Collections.sort(keys);
for (Integer channel : keys) channels.add((subdata.isNull(channel))?null:new ForwardedDataSender((SubDataClient) ClientAPI.getInstance().getSubDataNetwork()[0], subdata.getUUID(channel)));
return channels.toArray(new SubDataSender[0]);
Integer[] keys = subdata.getKeys().toArray(new Integer[0]);
DataSender[] channels = new DataSender[keys.length];
Arrays.sort(keys);
for (int i = 0; i < keys.length; ++i) channels[i] = (subdata.isNull(keys[i]))? null : new ForwardedDataSender((SubDataClient) ClientAPI.getInstance().getSubDataNetwork()[0], subdata.getUUID(keys[i]));
return channels;
}

/**
Expand Down
2 changes: 1 addition & 1 deletion SubServers.Client/Sponge/pom.xml
Expand Up @@ -28,7 +28,7 @@
<dependency>
<groupId>net.ME1312.Galaxi</groupId>
<artifactId>GalaxiUtil</artifactId>
<version>21w15a</version>
<version>21w15b</version>
<scope>compile</scope>
<optional>true</optional>
</dependency>
Expand Down
Expand Up @@ -73,11 +73,11 @@ public String getName() {
* @return SubData Network Connections
*/
public DataClient[] getSubDataNetwork() {
LinkedList<Integer> keys = new LinkedList<Integer>(plugin.subdata.keySet());
LinkedList<SubDataClient> channels = new LinkedList<SubDataClient>();
Collections.sort(keys);
for (Integer channel : keys) channels.add(plugin.subdata.get(channel));
return channels.toArray(new DataClient[0]);
Integer[] keys = plugin.subdata.keySet().toArray(new Integer[0]);
DataClient[] channels = new DataClient[keys.length];
Arrays.sort(keys);
for (int i = 0; i < keys.length; ++i) channels[i] = plugin.subdata.get(keys[i]);
return channels;
}

/**
Expand Down
Expand Up @@ -106,7 +106,6 @@ public void enable(GameInitializationEvent event) {
running = true;
reload(false);

subdata.put(0, null);
subprotocol = SubProtocol.get();
subprotocol.registerCipher("DHE", DHE.get(128));
subprotocol.registerCipher("DHE-128", DHE.get(128));
Expand Down
4 changes: 2 additions & 2 deletions SubServers.Host/pom.xml
Expand Up @@ -31,14 +31,14 @@
<dependency>
<groupId>net.ME1312.Galaxi</groupId>
<artifactId>GalaxiEngine</artifactId>
<version>21w15a</version>
<version>21w15b</version>
<scope>compile</scope>
<optional>true</optional>
</dependency>
<dependency>
<groupId>net.ME1312.Galaxi</groupId>
<artifactId>GalaxiUI</artifactId>
<version>21w15a</version>
<version>21w15b</version>
<scope>runtime</scope>
<optional>true</optional>
</dependency>
Expand Down
Expand Up @@ -12,6 +12,7 @@
*/
public class Executable {
private Executable() {}
private static final boolean USE_SESSION_TRACKING;

/**
* Format a command to be executed
Expand All @@ -30,14 +31,22 @@ public static String[] parse(String gitbash, String exec) {
exec = '"' + gitbash + ((gitbash.endsWith(File.separator))?"":File.separator) + "bin" + File.separatorChar + "sh.exe\" -lc \"" +
exec.replace("\\", "/\\").replace("\"", "\\\"").replace("^", "^^").replace("%", "^%").replace("&", "^&").replace("<", "^<").replace(">", "^>").replace("|", "^|") + '"';
cmd = new String[]{"cmd.exe", "/q", "/c", '"'+exec+'"'};
} else if (Platform.getSystem() == Platform.LINUX) {
} else if (USE_SESSION_TRACKING) {
cmd = new String[]{"setsid", "-w", "sh", "-lc", exec};
} else {
cmd = new String[]{"sh", "-lc", exec};
}
return cmd;
}

static {
USE_SESSION_TRACKING = Platform.getSystem() != Platform.WINDOWS && Util.getDespiteException(() -> {
Process test = Runtime.getRuntime().exec(new String[]{"setsid", "-w", "bash", "-c", "exit 0"});
test.waitFor(); // The purpose of this block is to test for the 'setsid' command
return test.exitValue() == 0;
}, false);
}

/**
* Get the PID of a currently running process
*
Expand Down Expand Up @@ -88,7 +97,7 @@ public static void terminate(Process process) {
if (pid != null) try {
if (Platform.getSystem() == Platform.WINDOWS) {
Runtime.getRuntime().exec(new String[]{"taskkill.exe", "/T", "/F", "/PID", pid.toString()}).waitFor();
} else if (Platform.getSystem() == Platform.LINUX) {
} else if (USE_SESSION_TRACKING) {
Runtime.getRuntime().exec(new String[]{"bash", "-c", "kill -9 $(ps -o pid= --sid $(ps -o sid= --pid " + pid + "))"}).waitFor();
}
} catch (IOException | InterruptedException e) {}
Expand Down
10 changes: 5 additions & 5 deletions SubServers.Host/src/net/ME1312/SubServers/Host/SubAPI.java
Expand Up @@ -57,11 +57,11 @@ public String getName() {
* @return SubData Network Connections
*/
public DataClient[] getSubDataNetwork() {
LinkedList<Integer> keys = new LinkedList<Integer>(host.subdata.keySet());
LinkedList<SubDataClient> channels = new LinkedList<SubDataClient>();
Collections.sort(keys);
for (Integer channel : keys) channels.add(host.subdata.get(channel));
return channels.toArray(new DataClient[0]);
Integer[] keys = host.subdata.keySet().toArray(new Integer[0]);
DataClient[] channels = new DataClient[keys.length];
Arrays.sort(keys);
for (int i = 0; i < keys.length; ++i) channels[i] = host.subdata.get(keys[i]);
return channels;
}

/**
Expand Down
4 changes: 2 additions & 2 deletions SubServers.Sync/pom.xml
Expand Up @@ -28,14 +28,14 @@
<dependency>
<groupId>net.ME1312.Galaxi</groupId>
<artifactId>GalaxiUtil</artifactId>
<version>21w15a</version>
<version>21w15b</version>
<scope>compile</scope>
<optional>true</optional>
</dependency>
<dependency>
<groupId>net.ME1312.Galaxi</groupId>
<artifactId>GalaxiEngine</artifactId>
<version>21w15a</version>
<version>21w15b</version>
<scope>provided</scope>
</dependency>
<dependency>
Expand Down
Expand Up @@ -67,11 +67,11 @@ private void init(String name, String display, SocketAddress address, Map<Intege
* @return SubData Client Channel ID Array
*/
public DataSender[] getSubData() {
LinkedList<Integer> keys = new LinkedList<Integer>(subdata.keySet());
LinkedList<SubDataSender> channels = new LinkedList<SubDataSender>();
Collections.sort(keys);
for (Integer channel : keys) channels.add((subdata.getOrDefault(channel, null) == null)?null:new ForwardedDataSender((SubDataClient) SubAPI.getInstance().getSubDataNetwork()[0], subdata.get(channel)));
return channels.toArray(new SubDataSender[0]);
Integer[] keys = subdata.keySet().toArray(new Integer[0]);
DataSender[] channels = new DataSender[keys.length];
Arrays.sort(keys);
for (int i = 0; i < keys.length; ++i) channels[i] = (subdata.getOrDefault(keys[i], null) == null)? null : new ForwardedDataSender((SubDataClient) SubAPI.getInstance().getSubDataNetwork()[0], subdata.get(keys[i]));
return channels;
}

/**
Expand Down

0 comments on commit ff82fd5

Please sign in to comment.