diff options
Diffstat (limited to 'src/main/java/de/bwlehrpool/bwlp_guac/ConnectionManager.java')
-rw-r--r-- | src/main/java/de/bwlehrpool/bwlp_guac/ConnectionManager.java | 19 |
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 |