diff --git a/server/src/main/java/de/ovgu/spldev/varied/CollaboratorManager.java b/server/src/main/java/de/ovgu/spldev/varied/CollaboratorManager.java index 686790b1..ddfabaf7 100644 --- a/server/src/main/java/de/ovgu/spldev/varied/CollaboratorManager.java +++ b/server/src/main/java/de/ovgu/spldev/varied/CollaboratorManager.java @@ -4,6 +4,7 @@ import de.ovgu.spldev.varied.util.CollaboratorUtils; import org.pmw.tinylog.Logger; +import java.util.Objects; import java.util.UUID; import java.util.concurrent.ConcurrentHashMap; @@ -40,6 +41,14 @@ public UUID register(WebSocket webSocket, UUID siteID) { return collaborator.getSiteID(); } + public void unregister(UUID siteID) { + Objects.requireNonNull(siteID, "site ID not provided"); + if (collaborators.containsKey(siteID)) { + collaborators.get(siteID).leaveAllCollaborativeSessions(); + Logger.info("unregistered site {}", siteID); + } + } + public void broadcast(Message.IEncodable message) { CollaboratorUtils.broadcast(collaborators.values(), message); } diff --git a/server/src/main/java/de/ovgu/spldev/varied/WebSocket.java b/server/src/main/java/de/ovgu/spldev/varied/WebSocket.java index ed23586a..aeff4c7e 100644 --- a/server/src/main/java/de/ovgu/spldev/varied/WebSocket.java +++ b/server/src/main/java/de/ovgu/spldev/varied/WebSocket.java @@ -51,6 +51,8 @@ public void onClose() { // maintained if they do not properly leave a collaborative session. They should // be removed and kernel-GC'ed after a timeout has passed, allowing some offline // editing period, and while they are offline, shown as "inactive" in the UI. + // UPDATE: changed this for the meantime, does not allow offline editing at all + CollaboratorManager.getInstance().unregister(siteID); } }