From c489a2ee2a66dc4a4c521479241a8d5144fba358 Mon Sep 17 00:00:00 2001 From: Elias Kuiter Date: Tue, 19 Nov 2019 15:58:31 +0100 Subject: [PATCH] Leave all collaboration sessions on logout --- .../java/de/ovgu/spldev/varied/CollaboratorManager.java | 9 +++++++++ .../src/main/java/de/ovgu/spldev/varied/WebSocket.java | 2 ++ 2 files changed, 11 insertions(+) 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); } }