quick patch to stop status spam

This commit is contained in:
Thomas
2020-08-17 17:38:38 +02:00
parent 63eca90f0e
commit 663a8ca8b6
4 changed files with 36 additions and 23 deletions

View File

@@ -6,18 +6,20 @@ import java.util.Optional;
import java.util.Random;
import org.json.JSONObject;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.web.socket.TextMessage;
import org.springframework.web.socket.WebSocketSession;
import gltronic.voozik.model.Server;
import gltronic.voozik.model.ServerStatus;
import gltronic.voozik.model.VRoom;
import gltronic.voozik.model.VUser;
@Service
public class RoomManager implements IRoomManager {
private volatile ArrayList<VUser> users = new ArrayList<VUser>();
private volatile ArrayList<VRoom> rooms = new ArrayList<VRoom>();
@Autowired
Server server;
@Override
public void login(WebSocketSession session, String name) throws InterruptedException, IOException {
@@ -26,12 +28,12 @@ public class RoomManager implements IRoomManager {
return;
}
if (users.stream().anyMatch(user -> user.getSession().equals(session))) {
if (server.users.stream().anyMatch(user -> user.getSession().equals(session))) {
SocketUtils.sendMessage(session, "login", "false");
return;
}
if (users.stream().anyMatch(user -> user.getName().equals(name))) {
if (server.users.stream().anyMatch(user -> user.getName().equals(name))) {
SocketUtils.sendMessage(session, "login", "false");
return;
}
@@ -40,7 +42,7 @@ public class RoomManager implements IRoomManager {
user.setName(name);
user.setSession(session);
users.add(user);
server.users.add(user);
SocketUtils.sendMessage(session, "login", "true");
sendServerInfos(session);
@@ -50,11 +52,11 @@ public class RoomManager implements IRoomManager {
@Override
public void leave(WebSocketSession session) throws InterruptedException, IOException {
VUser user = UserUtils.getUser(session, users);
VUser user = UserUtils.getUser(session, server.users);
if (user == null) return;
users.remove(user);
Optional<VRoom> oroom = rooms.stream().filter(room -> room.getUsers().contains(user)).findFirst();
server.users.remove(user);
Optional<VRoom> oroom = server.rooms.stream().filter(room -> room.getUsers().contains(user)).findFirst();
if (oroom.isPresent()) {
oroom.get().getUsers().remove(user);
@@ -63,7 +65,7 @@ public class RoomManager implements IRoomManager {
@Override
public void createRoom(WebSocketSession session) throws InterruptedException, IOException {
VUser user = UserUtils.getUser(session, users);
VUser user = UserUtils.getUser(session, server.users);
if (user == null) return;
if (user.getRoom() != null) {
@@ -83,7 +85,7 @@ public class RoomManager implements IRoomManager {
room.setPublic(false);
room.setUsers(new ArrayList<VUser>());
rooms.add(room);
server.rooms.add(room);
user.setRoom(room);
SocketUtils.sendMessage(session, "roomCreate", roomCode);
@@ -98,14 +100,14 @@ public class RoomManager implements IRoomManager {
return;
}
Optional<VRoom> oroom = rooms.stream().filter(room -> room.getCode().equals(roomCode)).findFirst();
Optional<VRoom> oroom = server.rooms.stream().filter(room -> room.getCode().equals(roomCode)).findFirst();
if (oroom.isEmpty()) {
SocketUtils.sendMessage(session, "error", "no room");
return;
}
VRoom room = oroom.get();
VUser user = UserUtils.getUser(session, users);
VUser user = UserUtils.getUser(session, server.users);
if (user == null) return;
user.setRoom(room);
@@ -129,7 +131,7 @@ public class RoomManager implements IRoomManager {
@Override
public void leaveRoom(WebSocketSession session) throws InterruptedException, IOException {
VUser user = UserUtils.getUser(session, users);
VUser user = UserUtils.getUser(session, server.users);
if (user == null) return;
VRoom room = UserUtils.getRoom(session, user);
@@ -151,7 +153,7 @@ public class RoomManager implements IRoomManager {
@Override
public void setRoomStatus(WebSocketSession session, TextMessage message) throws InterruptedException, IOException {
VUser user = UserUtils.getUser(session, users);
VUser user = UserUtils.getUser(session, server.users);
if (user == null) return;
VRoom room = UserUtils.getRoom(session, user);
@@ -175,7 +177,7 @@ public class RoomManager implements IRoomManager {
@Override
public void setRoomSettings(WebSocketSession session, TextMessage message) throws InterruptedException, IOException {
VUser user = UserUtils.getUser(session, users);
VUser user = UserUtils.getUser(session, server.users);
if (user == null) return;
VRoom room = UserUtils.getRoom(session, user);
@@ -192,7 +194,7 @@ public class RoomManager implements IRoomManager {
@Override
public void forwardRoomMessage(WebSocketSession session, TextMessage message) throws InterruptedException, IOException {
VUser user = UserUtils.getUser(session, users);
VUser user = UserUtils.getUser(session, server.users);
if (user == null) return;
VRoom room = UserUtils.getRoom(session, user);
@@ -210,7 +212,7 @@ public class RoomManager implements IRoomManager {
@Override
public void kickUser(WebSocketSession session, String username) throws InterruptedException, IOException {
VUser user = UserUtils.getUser(session, users);
VUser user = UserUtils.getUser(session, server.users);
if (user == null) return;
VRoom room = UserUtils.getRoom(session, user);
@@ -239,11 +241,11 @@ public class RoomManager implements IRoomManager {
public void sendServerInfos(WebSocketSession session) throws InterruptedException, IOException {
ServerStatus status = new ServerStatus();
status.setRoomCount(rooms.size());
status.setUserCount(users.size());
status.setRoomCount(server.rooms.size());
status.setUserCount(server.users.size());
status.setRooms(new ArrayList<String>());
rooms.forEach(room -> {
server.rooms.forEach(room -> {
if(room.isPublic()) status.getRooms().add(room.getCode());
});

View File

@@ -0,0 +1,11 @@
package gltronic.voozik.model;
import java.util.ArrayList;
import org.springframework.stereotype.Component;
@Component
public class Server {
public ArrayList<VUser> users = new ArrayList<VUser>();
public ArrayList<VRoom> rooms = new ArrayList<VRoom>();
}