You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@openmeetings.apache.org by so...@apache.org on 2017/08/02 03:04:07 UTC

openmeetings git commit: [OPENMEETINGS-1677] more work on ws messages

Repository: openmeetings
Updated Branches:
  refs/heads/3.3.x 9ffba612e -> e40c83813


[OPENMEETINGS-1677] more work on ws messages


Project: http://git-wip-us.apache.org/repos/asf/openmeetings/repo
Commit: http://git-wip-us.apache.org/repos/asf/openmeetings/commit/e40c8381
Tree: http://git-wip-us.apache.org/repos/asf/openmeetings/tree/e40c8381
Diff: http://git-wip-us.apache.org/repos/asf/openmeetings/diff/e40c8381

Branch: refs/heads/3.3.x
Commit: e40c83813fe59aaa05cd021e66e221d6ae007649
Parents: 9ffba61
Author: Maxim Solodovnik <so...@gmail.com>
Authored: Wed Aug 2 10:03:48 2017 +0700
Committer: Maxim Solodovnik <so...@gmail.com>
Committed: Wed Aug 2 10:03:48 2017 +0700

----------------------------------------------------------------------
 .../openmeetings/core/util/WebSocketHelper.java | 52 +++++++++++++++-----
 .../openmeetings/web/app/Application.java       | 10 ++--
 2 files changed, 48 insertions(+), 14 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/openmeetings/blob/e40c8381/openmeetings-core/src/main/java/org/apache/openmeetings/core/util/WebSocketHelper.java
----------------------------------------------------------------------
diff --git a/openmeetings-core/src/main/java/org/apache/openmeetings/core/util/WebSocketHelper.java b/openmeetings-core/src/main/java/org/apache/openmeetings/core/util/WebSocketHelper.java
index 681efd5..b98c517 100644
--- a/openmeetings-core/src/main/java/org/apache/openmeetings/core/util/WebSocketHelper.java
+++ b/openmeetings-core/src/main/java/org/apache/openmeetings/core/util/WebSocketHelper.java
@@ -120,41 +120,65 @@ public class WebSocketHelper {
 
 	public static void send(IClusterWsMessage _m) {
 		if (_m instanceof WsMessageRoomMsg) {
-			sendRoom(((WsMessageRoomMsg)_m).getMsg());
+			sendRoom(((WsMessageRoomMsg)_m).getMsg(), false);
 		} else if (_m instanceof WsMessageRoom) {
 			WsMessageRoom m = (WsMessageRoom)_m;
-			sendRoom(m.getRoomId(), m.getMsg());
+			sendRoom(m.getRoomId(), m.getMsg(), false);
 		} else if (_m instanceof WsMessageChat) {
 			WsMessageChat m = (WsMessageChat)_m;
-			sendRoom(m.getChatMessage(), m.getMsg());
+			sendRoom(m.getChatMessage(), m.getMsg(), false);
 		} else if (_m instanceof WsMessageUser) {
 			WsMessageUser m = (WsMessageUser)_m;
-			sendUser(m.getUserId(), m.getMsg());
+			sendUser(m.getUserId(), m.getMsg(), false);
 		} else if (_m instanceof WsMessageAll) {
-			sendAll(((WsMessageAll)_m).getMsg());
+			sendAll(((WsMessageAll)_m).getMsg(), false);
 		}
 	}
 
 	public static void sendRoom(final RoomMessage m) {
-		publish(new WsMessageRoomMsg(m));
+		sendRoom(m, true);
+	}
+
+	protected static void sendRoom(final RoomMessage m, boolean publish) {
+		if (publish) {
+			publish(new WsMessageRoomMsg(m));
+		}
 		log.debug("Sending WebSocket message: {} {}", m.getType(), m instanceof TextRoomMessage ? ((TextRoomMessage)m).getText() : "");
 		sendRoom(m.getRoomId(), (t, c) -> t.sendMessage(m), null);
 	}
 
 	public static void sendRoom(final Long roomId, final JSONObject m) {
-		publish(new WsMessageRoom(roomId, m));
+		sendRoom(roomId, m, true);
+	}
+
+	protected static void sendRoom(final Long roomId, final JSONObject m, boolean publish) {
+		if (publish) {
+			publish(new WsMessageRoom(roomId, m));
+		}
 		sendRoom(roomId, m, null, null);
 	}
 
 	public static void sendRoom(ChatMessage m, JSONObject msg) {
-		publish(new WsMessageChat(m, msg));
+		sendRoom(m, msg, true);
+	}
+
+	protected static void sendRoom(ChatMessage m, JSONObject msg, boolean publish) {
+		if (publish) {
+			publish(new WsMessageChat(m, msg));
+		}
 		sendRoom(m.getToRoom().getId(), msg
 				, c -> !m.isNeedModeration() || (m.isNeedModeration() && c.hasRight(Right.moderator))
 				, null);
 	}
 
 	public static void sendUser(final Long userId, final String m) {
-		publish(new WsMessageUser(userId, m));
+		sendUser(userId, m, true);
+	}
+
+	protected static void sendUser(final Long userId, final String m, boolean publish) {
+		if (publish) {
+			publish(new WsMessageUser(userId, m));
+		}
 		send(a -> ((IApplication)a).getOmClients(userId), (t, c) -> {
 			try {
 				t.sendMessage(m);
@@ -164,9 +188,15 @@ public class WebSocketHelper {
 		}, null);
 	}
 
-	//TODO should this be unified???
 	public static void sendAll(final String m) {
-		publish(new WsMessageAll(m));
+		sendAll(m, true);
+	}
+
+	//TODO should this be unified???
+	protected static void sendAll(final String m, boolean publish) {
+		if (publish) {
+			publish(new WsMessageAll(m));
+		}
 		Application app = Application.get(OpenmeetingsVariables.wicketApplicationName);
 		WebSocketSettings settings = WebSocketSettings.Holder.get(app);
 		IWebSocketConnectionRegistry reg = settings.getConnectionRegistry();

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/e40c8381/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application.java
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application.java
index 7a5ec65..e16b8ec 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application.java
@@ -209,12 +209,16 @@ public class Application extends AuthenticatedWebApplication implements IApplica
 				//check for duplicate instance-names
 				Set<String> names = new HashSet<>();
 				for (Member m : evt.getMembers()) {
-					String serverId = evt.getMember().getStringAttribute(NAME_ATTR_KEY);
-					if (names.contains(serverId)) {
-						log.warn("Duplicate cluster instance with name {} found {}", serverId, m);
+					if (evt.getMember().getUuid().equals(m.getUuid())) {
+						continue;
 					}
+					String serverId = m.getStringAttribute(NAME_ATTR_KEY);
 					names.add(serverId);
 				}
+				String serverId = evt.getMember().getStringAttribute(NAME_ATTR_KEY);
+				if (names.contains(serverId)) {
+					log.warn("Duplicate cluster instance with name {} found {}", serverId, evt.getMember());
+				}
 			}
 		});
 		setPageManagerProvider(new DefaultPageManagerProvider(this) {