summaryrefslogtreecommitdiffstats
path: root/src/main/java/de/bwlehrpool/bwlp_guac/ConnectionManager.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/de/bwlehrpool/bwlp_guac/ConnectionManager.java')
-rw-r--r--src/main/java/de/bwlehrpool/bwlp_guac/ConnectionManager.java19
1 files changed, 19 insertions, 0 deletions
diff --git a/src/main/java/de/bwlehrpool/bwlp_guac/ConnectionManager.java b/src/main/java/de/bwlehrpool/bwlp_guac/ConnectionManager.java
index 97dd851..62b54b6 100644
--- a/src/main/java/de/bwlehrpool/bwlp_guac/ConnectionManager.java
+++ b/src/main/java/de/bwlehrpool/bwlp_guac/ConnectionManager.java
@@ -45,6 +45,25 @@ public class ConnectionManager {
private static final LinkedHashMap<Integer, JsonGroup> groupPool = new LinkedHashMap<Integer, JsonGroup>();
public static LinkedHashMap<Integer, JsonGroup> getGroupPool() { return groupPool; }
+
+ public static WrappedConnection getExistingConnection(String user) {
+ AvailableClient freeClient = null;
+ synchronized (clientPool) {
+ for (AvailableClient ac : clientPool.values()) {
+ LOGGER.info("Looking for existing mapping: Checking client " + ac);
+ if (ac.isInUseBy(user)) {
+ LOGGER.info("Client " + ac + " is in use by " + user);
+ freeClient = ac;
+ break;
+ }
+ }
+ }
+ if (freeClient != null && freeClient.checkConnection(1)) {
+ LOGGER.info("Existing mapping for user " + user + " to " + freeClient);
+ return freeClient.getConnection(user);
+ }
+ return null;
+ }
/**
* Pass plain user name, get existing connection (if any), or a fresh one