Repository: openmeetings Updated Branches: refs/heads/master 381838de8 -> ce85e43d1
[OPENMEETINGS-1715] room exit for mobile client is fixed Project: http://git-wip-us.apache.org/repos/asf/openmeetings/repo Commit: http://git-wip-us.apache.org/repos/asf/openmeetings/commit/ce85e43d Tree: http://git-wip-us.apache.org/repos/asf/openmeetings/tree/ce85e43d Diff: http://git-wip-us.apache.org/repos/asf/openmeetings/diff/ce85e43d Branch: refs/heads/master Commit: ce85e43d1c45b95ea94425d28c37abcb6a1aa464 Parents: 381838d Author: Maxim Solodovnik <[email protected]> Authored: Fri Sep 29 14:18:47 2017 +0700 Committer: Maxim Solodovnik <[email protected]> Committed: Fri Sep 29 14:18:47 2017 +0700 ---------------------------------------------------------------------- .../core/remote/ScopeApplicationAdapter.java | 4 +- .../org/apache/openmeetings/IApplication.java | 2 +- .../db/entity/room/StreamClient.java | 6 ++ .../openmeetings/web/app/Application.java | 58 ++++++++++---------- .../openmeetings/web/common/MainPanel.java | 2 +- 5 files changed, 39 insertions(+), 33 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/openmeetings/blob/ce85e43d/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/ScopeApplicationAdapter.java ---------------------------------------------------------------------- diff --git a/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/ScopeApplicationAdapter.java b/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/ScopeApplicationAdapter.java index a985e0b..21faa87 100644 --- a/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/ScopeApplicationAdapter.java +++ b/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/ScopeApplicationAdapter.java @@ -380,7 +380,7 @@ public class ScopeApplicationAdapter extends MultiThreadedApplicationAdapter imp } } - public void roomLeaveByScope(Client c, Long roomId) { + public void roomLeaveByScope(org.apache.openmeetings.db.entity.basic.IClient c, Long roomId) { StreamClient rcl = sessionManager.get(c.getUid()); IScope scope = getChildScope(String.valueOf(roomId)); _log.debug("[roomLeaveByScope] {} {} {} {}", c.getUid(), roomId, rcl, scope); @@ -434,7 +434,7 @@ public class ScopeApplicationAdapter extends MultiThreadedApplicationAdapter imp _log.debug("currentScope " + scope); if (Client.Type.mobile == client.getType() || Client.Type.sip == client.getType()) { - getApp().exit(client.getUid()); + getApp().exit(client); } sessionManager.remove(client.getUid()); } catch (Exception err) { http://git-wip-us.apache.org/repos/asf/openmeetings/blob/ce85e43d/openmeetings-db/src/main/java/org/apache/openmeetings/IApplication.java ---------------------------------------------------------------------- diff --git a/openmeetings-db/src/main/java/org/apache/openmeetings/IApplication.java b/openmeetings-db/src/main/java/org/apache/openmeetings/IApplication.java index 865854b..0ae584a 100644 --- a/openmeetings-db/src/main/java/org/apache/openmeetings/IApplication.java +++ b/openmeetings-db/src/main/java/org/apache/openmeetings/IApplication.java @@ -52,10 +52,10 @@ public interface IApplication { String getOmInvitationLink(Invitation i); String urlForActivatePage(PageParameters pp); void invalidateClient(Long userId, String sessionId); - void exit(String uid); void setXFrameOptions(String xFrameOptions); void setContentSecurityPolicy(String contentSecurityPolicy); + void exit(IClient c); IClient update(IClient c); // web client http://git-wip-us.apache.org/repos/asf/openmeetings/blob/ce85e43d/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/room/StreamClient.java ---------------------------------------------------------------------- diff --git a/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/room/StreamClient.java b/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/room/StreamClient.java index cd3bd99..a423489 100644 --- a/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/room/StreamClient.java +++ b/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/room/StreamClient.java @@ -45,6 +45,7 @@ public class StreamClient implements IClient { private int userport; private Date roomEnter = null; private String broadcastId = null; + @SuppressWarnings("unused") private String broadCastID = null; //required for mobile only private String login = ""; private Long userId = null; private String firstname = ""; @@ -203,6 +204,11 @@ public class StreamClient implements IClient { public void setBroadcastId(String broadcastId) { this.broadcastId = broadcastId; + this.broadCastID = broadcastId; + } + + public String getBroadCastID() { + return broadCastID; } @Override http://git-wip-us.apache.org/repos/asf/openmeetings/blob/ce85e43d/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 42fb8ea..a188fa7 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 @@ -395,32 +395,24 @@ public class Application extends AuthenticatedWebApplication implements IApplica get().getUidBySid().put(c.getSid(), c.getUid()); } - public static void exitRoom(Client c) { - Room room = c.getRoom(); + public static void exitRoom(IClient c) { + Long roomId = c.getRoomId(); removeUserFromRoom(c); - if (room != null) { - sendRoom(new RoomMessage(room.getId(), c.getUserId(), RoomMessage.Type.roomExit)); + if (roomId != null) { + sendRoom(new RoomMessage(roomId, c.getUserId(), RoomMessage.Type.roomExit)); getBean(ConferenceLogDao.class).add( ConferenceLog.Type.roomLeave - , c.getUserId(), "0", room.getId() + , c.getUserId(), "0", roomId , c.getRemoteAddress() - , "" + room); + , String.valueOf(roomId)); } } @Override - public void exit(String uid) { - if (uid != null) { - exit(getOnlineUsers().get(uid)); - } - } - - private static void exit(Client c) { + public void exit(IClient c) { if (c != null) { - if (c.getRoom() != null) { - exitRoom(c); - } - log.debug("Removing online client: {}, room: {}", c.getUid(), c.getRoom()); + exitRoom(c); + log.debug("Removing online client: {}, roomId: {}", c.getUid(), c.getRoomId()); get().getOnlineUsers().remove(c.getUid()); get().getUidBySid().remove(c.getSid()); } @@ -623,22 +615,30 @@ public class Application extends AuthenticatedWebApplication implements IApplica return c; } - public static Client removeUserFromRoom(Client c) { - Room room = c.getRoom(); - log.debug("Removing online room client: {}, room: {}", c.getUid(), room); - if (room != null) { + public static IClient removeUserFromRoom(IClient _c) { + Long roomId = _c.getRoomId(); + log.debug("Removing online room client: {}, room: {}", _c.getUid(), roomId); + if (roomId != null) { Map<Long, Set<String>> rooms = get().getRooms(); - Set<String> clients = rooms.get(room.getId()); + Set<String> clients = rooms.get(roomId); if (clients != null) { - clients.remove(c.getUid()); - rooms.put(room.getId(), clients); + clients.remove(_c.getUid()); + rooms.put(roomId, clients); + } + if (_c instanceof StreamClient) { + StreamClient sc = (StreamClient)_c; + if (Client.Type.mobile != sc.getType() && Client.Type.sip != sc.getType()) { + getBean(ScopeApplicationAdapter.class).roomLeaveByScope(_c, roomId); + } + } + if (_c instanceof Client) { + Client c = (Client)_c; + c.setRoom(null); + c.clear(); + update(c); } - getBean(ScopeApplicationAdapter.class).roomLeaveByScope(c, room.getId()); - c.setRoom(null); - c.clear(); - update(c); } - return c; + return _c; } @Override http://git-wip-us.apache.org/repos/asf/openmeetings/blob/ce85e43d/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/MainPanel.java ---------------------------------------------------------------------- diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/MainPanel.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/MainPanel.java index 605e6e2..e86a2ea 100644 --- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/MainPanel.java +++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/MainPanel.java @@ -178,7 +178,7 @@ public class MainPanel extends Panel { //no chance to stop pingTimer here :( if (uid != null) { log.debug("WebSocketBehavior::closeHandler [uid: {}, session: {}, key: {}]", uid, msg.getSessionId(), msg.getKey()); - Application.get().exit(uid); + Application.get().exit(getClient()); uid = null; } }
