From 83eba294f9a7f8a8250127f8b5673aff0fc04663 Mon Sep 17 00:00:00 2001 From: Julian Hochstetter <julian.hochstetter@mni.thm.de> Date: Mon, 3 Dec 2012 11:26:30 +0100 Subject: [PATCH] dont broadcast feedback changes, post it only to the affecting session and the users inside of it --- .../thm/arsnova/services/FeedbackService.java | 9 ++-- .../arsnova/socket/ARSnovaSocketIOServer.java | 47 ++++++++----------- 2 files changed, 24 insertions(+), 32 deletions(-) diff --git a/src/main/java/de/thm/arsnova/services/FeedbackService.java b/src/main/java/de/thm/arsnova/services/FeedbackService.java index 5085a298d..53a0ee4f7 100644 --- a/src/main/java/de/thm/arsnova/services/FeedbackService.java +++ b/src/main/java/de/thm/arsnova/services/FeedbackService.java @@ -102,9 +102,7 @@ public class FeedbackService implements IFeedbackService { public final boolean saveFeedback(final String keyword, final int value, final User user) { boolean result = databaseDao.saveFeedback(keyword, value, user); if (result) { - HashSet<String> set = new HashSet<String>(); - set.add(keyword); - this.server.reportUpdatedFeedbackForSessions(set); + this.server.reportUpdatedFeedbackForSession(keyword); } return result; } @@ -130,7 +128,10 @@ public class FeedbackService implements IFeedbackService { this.server.reportDeletedFeedback(e.getKey(), e.getValue()); } } - this.server.reportUpdatedFeedbackForSessions(allAffectedSessions); + for(String session : allAffectedSessions) { + this.server.reportUpdatedFeedbackForSession(session); + } + } @Override diff --git a/src/main/java/de/thm/arsnova/socket/ARSnovaSocketIOServer.java b/src/main/java/de/thm/arsnova/socket/ARSnovaSocketIOServer.java index 8d1b7ad50..896c9f991 100644 --- a/src/main/java/de/thm/arsnova/socket/ARSnovaSocketIOServer.java +++ b/src/main/java/de/thm/arsnova/socket/ARSnovaSocketIOServer.java @@ -91,30 +91,11 @@ public class ARSnovaSocketIOServer { } feedbackService.saveFeedback(data.getSessionkey(), data.getValue(), u); - + /** - * collect a list of users which are in the current - * session iterate over all connected clients and if - * send feedback, if user is in current session + * send feedback back to clients */ - List<String> users = userService.getUsersInSession(data - .getSessionkey()); - - logger.info(u.toString()); - logger.info(users.toString()); - logger.info(data.getSessionkey()); - - de.thm.arsnova.entities.Feedback fb = feedbackService - .getFeedback(data.getSessionkey()); - - for (SocketIOClient c : server.getAllClients()) { - u = userService.getUser2SocketId(c.getSessionId()); - if (u != null && users.contains(u.getUsername())) { - logger.info("sending out to client {}, username is: {}, current session is: {}", - new Object[] {c.getSessionId(), u.getUsername(), data.getSessionkey()}); - c.sendEvent("updateFeedback", fb.getValues()); - } - } + reportUpdatedFeedbackForSession(data.getSessionkey()); } }); @@ -225,12 +206,22 @@ public class ARSnovaSocketIOServer { return result; } - public void reportUpdatedFeedbackForSessions(Set<String> allAffectedSessions) { - for (String sessionKey : allAffectedSessions) { - de.thm.arsnova.entities.Feedback fb = feedbackService - .getFeedback(sessionKey); - server.getBroadcastOperations().sendEvent("updateFeedback", - fb.getValues()); + public void reportUpdatedFeedbackForSession(String session) { + /** + * collect a list of users which are in the current + * session iterate over all connected clients and if + * send feedback, if user is in current session + */ + List<String> users = userService.getUsersInSession(session); + de.thm.arsnova.entities.Feedback fb = feedbackService.getFeedback(session); + + for (SocketIOClient c : server.getAllClients()) { + User u = userService.getUser2SocketId(c.getSessionId()); + if (u != null && users.contains(u.getUsername())) { + logger.info("sending out to client {}, username is: {}, current session is: {}", + new Object[] {c.getSessionId(), u.getUsername(), session}); + c.sendEvent("updateFeedback", fb.getValues()); + } } } } \ No newline at end of file -- GitLab