Skip to content
Snippets Groups Projects
Commit d8082661 authored by Paul-Christian Volkmer's avatar Paul-Christian Volkmer
Browse files

Handle session and user destinated events

parent d1c9be66
No related merge requests found
...@@ -2,19 +2,37 @@ package de.thm.arsnova.events; ...@@ -2,19 +2,37 @@ package de.thm.arsnova.events;
import org.springframework.context.ApplicationEvent; import org.springframework.context.ApplicationEvent;
import de.thm.arsnova.entities.User;
public class ARSnovaEvent extends ApplicationEvent { public class ARSnovaEvent extends ApplicationEvent {
private static final long serialVersionUID = 1L; private static final long serialVersionUID = 1L;
private String sessionKey; private String sessionKey;
private User user;
private String eventName; private String eventName;
private Object data; private Object data;
private Destination destination;
public enum Destination {
USER,
SESSION
};
public ARSnovaEvent(Object source, String sKey, String eName, Object d) { public ARSnovaEvent(Object source, String sKey, String eName, Object d) {
super(source); super(source);
this.data = d; this.data = d;
this.eventName = eName; this.eventName = eName;
this.sessionKey = sKey; this.sessionKey = sKey;
this.destination = Destination.SESSION;
}
public ARSnovaEvent(Object source, User recipient, String eName, Object d) {
super(source);
this.data = d;
this.eventName = eName;
this.user = recipient;
this.destination = Destination.USER;
} }
public String getSessionKey() { public String getSessionKey() {
...@@ -28,4 +46,12 @@ public class ARSnovaEvent extends ApplicationEvent { ...@@ -28,4 +46,12 @@ public class ARSnovaEvent extends ApplicationEvent {
public Object getData() { public Object getData() {
return data; return data;
} }
public User getRecipient() {
return user;
}
public Destination getDestinationType() {
return destination;
}
} }
package de.thm.arsnova.events;
...@@ -9,6 +9,7 @@ import org.springframework.stereotype.Component; ...@@ -9,6 +9,7 @@ import org.springframework.stereotype.Component;
import de.thm.arsnova.entities.Session; import de.thm.arsnova.entities.Session;
import de.thm.arsnova.entities.User; import de.thm.arsnova.entities.User;
import de.thm.arsnova.events.ARSnovaEvent; import de.thm.arsnova.events.ARSnovaEvent;
import de.thm.arsnova.events.ARSnovaEvent.Destination;
import de.thm.arsnova.socket.ARSnovaSocketIOServer; import de.thm.arsnova.socket.ARSnovaSocketIOServer;
@Component @Component
...@@ -56,11 +57,21 @@ public class UserSessionServiceImpl implements UserSessionService { ...@@ -56,11 +57,21 @@ public class UserSessionServiceImpl implements UserSessionService {
@Override @Override
public void sendEventViaWebSocket(ARSnovaSocketIOServer server, ARSnovaEvent event) { public void sendEventViaWebSocket(ARSnovaSocketIOServer server, ARSnovaEvent event) {
if ( if (
hasConnectedWebSocket() event.getDestinationType() == Destination.SESSION
&& hasConnectedWebSocket()
&& event != null && session != null && event != null && session != null
&& event.getSessionKey().equals(session.getKeyword()) && event.getSessionKey().equals(session.getKeyword())
) { ) {
server.sendToClient(getSocketId(), event); server.sendToClient(getSocketId(), event);
} }
if (
event.getDestinationType() == Destination.USER
&& hasConnectedWebSocket()
&& event != null && user != null
&& event.getRecipient().getUsername().equals(user.getUsername())
) {
server.sendToClient(getSocketId(), event);
}
} }
} }
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment