Skip to content

Commit 45e89b3

Browse files
committed
🐎 Improved performance
1 parent 0fb13e6 commit 45e89b3

7 files changed

Lines changed: 32 additions & 21 deletions

File tree

build.gradle

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ import org.apache.tools.ant.filters.ReplaceTokens
33
apply plugin: 'java'
44

55
group = 'fr.customentity'
6-
version = '0.3.1'
6+
version = '0.3.2'
77

88
sourceCompatibility = '1.8'
99
targetCompatibility = '1.8'

src/main/java/fr/customentity/advancedbungeequeue/bungee/manager/QueueManager.java

Lines changed: 21 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -4,14 +4,18 @@
44
import fr.customentity.advancedbungeequeue.bungee.data.Priority;
55
import fr.customentity.advancedbungeequeue.bungee.data.QueuedPlayer;
66
import fr.customentity.advancedbungeequeue.bungee.runnable.ConnectRunnable;
7-
import fr.customentity.advancedbungeequeue.common.QueueResult;
87
import net.md_5.bungee.api.config.ServerInfo;
98
import net.md_5.bungee.api.connection.ProxiedPlayer;
109
import net.md_5.bungee.api.event.ServerConnectEvent;
1110

12-
import java.net.InetSocketAddress;
13-
import java.util.*;
14-
import java.util.concurrent.*;
11+
import java.util.ArrayList;
12+
import java.util.Collections;
13+
import java.util.List;
14+
import java.util.Optional;
15+
import java.util.concurrent.ConcurrentHashMap;
16+
import java.util.concurrent.Executors;
17+
import java.util.concurrent.ScheduledExecutorService;
18+
import java.util.concurrent.TimeUnit;
1519
import java.util.logging.Level;
1620

1721
public class QueueManager {
@@ -20,24 +24,22 @@ public class QueueManager {
2024

2125
private ConcurrentHashMap<ServerInfo, List<QueuedPlayer>> queue;
2226
private ScheduledExecutorService scheduledExecutorService;
23-
private List<ScheduledFuture<?>> scheduledFutures;
2427

2528
private boolean paused = false;
2629
private boolean enabled = true;
2730

2831
public QueueManager(AdvancedBungeeQueue plugin) {
2932
this.plugin = plugin;
3033
this.queue = new ConcurrentHashMap<>();
31-
this.scheduledExecutorService = new ScheduledThreadPoolExecutor(plugin.getConfigFile().getInt("thread-pool-size"));
32-
this.scheduledFutures = new ArrayList<>();
3334

3435
this.startQueue();
3536
}
3637

3738
public void startQueue() {
3839
this.loadServersQueue();
40+
this.scheduledExecutorService = Executors.newScheduledThreadPool(queue.keySet().size());
3941
for (ServerInfo serverInfo : queue.keySet()) {
40-
this.scheduledFutures.add(this.scheduledExecutorService.scheduleAtFixedRate(new ConnectRunnable(plugin, serverInfo), this.plugin.getConfigFile().getLong("queue-speed"), this.plugin.getConfigFile().getLong("queue-speed"), TimeUnit.MILLISECONDS));
42+
this.scheduledExecutorService.scheduleAtFixedRate(new ConnectRunnable(plugin, serverInfo), this.plugin.getConfigFile().getLong("queue-speed"), this.plugin.getConfigFile().getLong("queue-speed"), TimeUnit.MILLISECONDS);
4143
}
4244
}
4345

@@ -50,10 +52,18 @@ public boolean isEnabled() {
5052
}
5153

5254
public void setEnabled(boolean enabled) {
53-
if (!enabled) {
55+
if (this.enabled && !enabled) {
5456
queue.clear();
55-
this.scheduledFutures.forEach(scheduledFuture -> scheduledFuture.cancel(true));
56-
} else {
57+
Thread thread = new Thread(() -> {
58+
this.scheduledExecutorService.shutdown();
59+
try {
60+
this.scheduledExecutorService.awaitTermination(5, TimeUnit.SECONDS);
61+
} catch (InterruptedException e) {
62+
e.printStackTrace();
63+
}
64+
});
65+
thread.start();
66+
} else if (!this.enabled && enabled) {
5767
this.startQueue();
5868
}
5969
this.enabled = enabled;

src/main/java/fr/customentity/advancedbungeequeue/bungee/socket/ServerThread.java

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@
1616
import java.util.Optional;
1717
import java.util.UUID;
1818

19-
public class ServerThread extends Thread {
19+
public class ServerThread implements Runnable {
2020

2121
private AdvancedBungeeQueue plugin;
2222
private Socket client;
@@ -62,8 +62,6 @@ public void run() {
6262
in.close();
6363
reader.close();
6464
client.close();
65-
66-
this.interrupt();
6765
} catch (IOException | ClassNotFoundException e) {
6866
e.printStackTrace();
6967
}

src/main/java/fr/customentity/advancedbungeequeue/bungee/socket/SocketManager.java

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,15 +6,21 @@
66
import java.net.ServerSocket;
77
import java.net.Socket;
88
import java.net.SocketException;
9+
import java.util.concurrent.ExecutorService;
10+
import java.util.concurrent.Executors;
911
import java.util.logging.Level;
1012

1113
public class SocketManager {
1214

1315
ServerSocket socket;
1416
private AdvancedBungeeQueue plugin;
1517

18+
private ExecutorService cachedExecutorService;
19+
1620
public SocketManager(AdvancedBungeeQueue plugin) {
1721
this.plugin = plugin;
22+
23+
this.cachedExecutorService = Executors.newCachedThreadPool();
1824
}
1925

2026
public void initListener() {
@@ -29,8 +35,7 @@ public void initListener() {
2935
Socket client = socket.accept();
3036
client.setKeepAlive(true);
3137

32-
ServerThread serverThread = new ServerThread(plugin, client);
33-
serverThread.start();
38+
this.cachedExecutorService.submit(new ServerThread(plugin, client));
3439
}
3540

3641
} catch (IOException e) {

src/main/java/fr/customentity/advancedbungeequeue/common/actions/all/ConfirmConnectionAction.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@
33
import fr.customentity.advancedbungeequeue.common.QueueResult;
44
import fr.customentity.advancedbungeequeue.common.actions.PlayerAction;
55

6-
import java.io.Serializable;
76
import java.util.UUID;
87

98
public class ConfirmConnectionAction extends PlayerAction {
@@ -18,4 +17,4 @@ public ConfirmConnectionAction(UUID uuid, QueueResult queueResult) {
1817
public QueueResult getQueueResult() {
1918
return queueResult;
2019
}
21-
}
20+
}

src/main/java/fr/customentity/advancedbungeequeue/spigot/SocketManager.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@ public void sendCommandToExecute(UUID uuid, String command) {
4848
Thread thread = new Thread(() -> {
4949
Socket client;
5050
try {
51-
client = new Socket("localhost", plugin.getConfig().getInt("socket-port"));
51+
client = new Socket(plugin.getConfig().getString("socket-host", "localhost"), plugin.getConfig().getInt("socket-port"));
5252
OutputStream out = client.getOutputStream();
5353
ObjectOutputStream writer = new ObjectOutputStream(out);
5454
writer.writeUTF(plugin.getConfig().getString("socket-password", "TOABSOLUTELYCHANGE"));

src/main/resources/config.yml

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@ player-amount: 2
66
socket-host: localhost
77
socket-port: 1233
88
socket-password: "TOABSOLUTELYCHANGE"
9-
thread-pool-size: 4
109
use-same-queue: false
1110
default-servers:
1211
- "lobby"

0 commit comments

Comments
 (0)