Repository: openmeetings Updated Branches: refs/heads/master b4ed57b98 -> 3f0e571ba
[OPENMEETINGS-1644] StreamClient is simplified, video start is more stable Project: http://git-wip-us.apache.org/repos/asf/openmeetings/repo Commit: http://git-wip-us.apache.org/repos/asf/openmeetings/commit/3f0e571b Tree: http://git-wip-us.apache.org/repos/asf/openmeetings/tree/3f0e571b Diff: http://git-wip-us.apache.org/repos/asf/openmeetings/diff/3f0e571b Branch: refs/heads/master Commit: 3f0e571baab49cdcf2a829aea3759aaae0d0f82c Parents: b4ed57b Author: Maxim Solodovnik <[email protected]> Authored: Tue Aug 8 11:46:00 2017 +0700 Committer: Maxim Solodovnik <[email protected]> Committed: Tue Aug 8 11:46:00 2017 +0700 ---------------------------------------------------------------------- .../openmeetings/core/remote/MobileService.java | 7 ++-- .../core/remote/RecordingService.java | 9 ++--- .../core/remote/ScopeApplicationAdapter.java | 29 +++++++-------- .../core/session/SessionManager.java | 3 +- .../openmeetings/core/util/RoomHelper.java | 2 +- .../openmeetings/db/entity/basic/Client.java | 20 +++++------ .../openmeetings/db/entity/basic/IClient.java | 6 ++++ .../db/entity/room/StreamClient.java | 38 ++++++-------------- .../web/admin/connection/ConnectionsPanel.java | 2 +- .../openmeetings/web/app/Application.java | 4 +-- .../openmeetings/web/room/RoomBroadcaster.java | 6 ++-- .../apache/openmeetings/web/room/RoomPanel.java | 6 ++-- .../web/room/sidebar/RoomSidebar.java | 9 +---- 13 files changed, 61 insertions(+), 80 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/openmeetings/blob/3f0e571b/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/MobileService.java ---------------------------------------------------------------------- diff --git a/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/MobileService.java b/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/MobileService.java index edfb987..6aea081 100644 --- a/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/MobileService.java +++ b/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/MobileService.java @@ -49,6 +49,7 @@ import org.apache.openmeetings.db.dao.server.SessiondataDao; import org.apache.openmeetings.db.dao.user.IUserManager; import org.apache.openmeetings.db.dao.user.UserDao; import org.apache.openmeetings.db.entity.basic.ChatMessage; +import org.apache.openmeetings.db.entity.basic.Client; import org.apache.openmeetings.db.entity.room.Room; import org.apache.openmeetings.db.entity.room.StreamClient; import org.apache.openmeetings.db.entity.server.Sessiondata; @@ -213,7 +214,7 @@ public class MobileService { public StreamClient create(User u, Sessiondata sd) { StreamClient c = new StreamClient(); - c.setMobile(true); + c.setType(StreamClient.Type.mobile); c.setOwnerSid(sd.getSessionId()); c.setUid(UUID.randomUUID().toString()); return create(c, u); @@ -263,7 +264,7 @@ public class MobileService { for (IConnection conn : current.getScope().getClientConnections()) { if (conn != null && conn instanceof IServiceCapableConnection) { StreamClient c = sessionManager.get(IClientUtil.getId(conn.getClient())); - if (!Strings.isEmpty(c.getAvsettings()) && !c.isSharing()) { + if (!Strings.isEmpty(c.getAvsettings()) && Client.Type.sharing != c.getType()) { //TODO duplicates !!!!!!!!!!!!!! Map<String, Object> map = new HashMap<>(); add(map, "streamId", c.getId()); @@ -411,7 +412,7 @@ public class MobileService { @Override public boolean filter(IConnection conn) { StreamClient rcl = sessionManager.get(IClientUtil.getId(conn.getClient())); - return rcl.isSharing() + return Client.Type.sharing == rcl.getType() || rcl.getRoomId() == null || !rcl.getRoomId().equals(roomId); } }.start(); http://git-wip-us.apache.org/repos/asf/openmeetings/blob/3f0e571b/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/RecordingService.java ---------------------------------------------------------------------- diff --git a/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/RecordingService.java b/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/RecordingService.java index 5500ddc..965a11b 100644 --- a/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/RecordingService.java +++ b/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/RecordingService.java @@ -36,6 +36,7 @@ import org.apache.openmeetings.db.dao.record.RecordingMetaDataDao; import org.apache.openmeetings.db.dao.record.RecordingMetaDeltaDao; import org.apache.openmeetings.db.dao.server.ISessionManager; import org.apache.openmeetings.db.dao.user.UserDao; +import org.apache.openmeetings.db.entity.basic.Client; import org.apache.openmeetings.db.entity.file.FileItem.Type; import org.apache.openmeetings.db.entity.record.Recording; import org.apache.openmeetings.db.entity.record.RecordingMetaData; @@ -146,7 +147,7 @@ public class RecordingService implements IPendingServiceCallback { WebSocketHelper.sendRoom(new TextRoomMessage(roomId, ownerId, RoomMessage.Type.recordingStarted, client.getOwnerSid())); // If its the recording client we need another type of Meta Data - if (rcl.isSharing()) { + if (Client.Type.sharing == rcl.getType()) { if (rcl.getRecordingId() != null && rcl.isSharingStarted()) { String streamName_Screen = generateFileName(recordingId, rcl.getBroadCastId()); @@ -322,7 +323,7 @@ public class RecordingService implements IPendingServiceCallback { } log.debug("is this users still alive? stop it :" + rcl); - if (rcl.isSharing()) { + if (Client.Type.sharing == rcl.getType()) { if (rcl.getRecordingId() != null && rcl.isSharingStarted()) { // Stop FLV Recording stopRecordingShow(scope, rcl.getBroadCastId(), rcl.getMetaId()); @@ -379,7 +380,7 @@ public class RecordingService implements IPendingServiceCallback { // rcl.getUserip(), false); log.debug("### stopRecordingShowForClient: " + rcl); - if (rcl.isSharing()) { + if (Client.Type.sharing == rcl.getType()) { if (rcl.getRecordingId() != null && rcl.isSharingStarted()) { // Stop FLV Recording @@ -412,7 +413,7 @@ public class RecordingService implements IPendingServiceCallback { Date now = new Date(); // If its the recording client we need another type of Meta Data - if (rcl.isSharing()) { + if (Client.Type.sharing == rcl.getType()) { if (rcl.getRecordingId() != null && rcl.isSharingStarted()) { String streamName_Screen = generateFileName(recordingId, rcl.getBroadCastId().toString()); http://git-wip-us.apache.org/repos/asf/openmeetings/blob/3f0e571b/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 54c8b9c..7212137 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 @@ -225,12 +225,12 @@ public class ScopeApplicationAdapter extends MultiThreadedApplicationAdapter imp return rejectClient(); } if (Boolean.TRUE.equals(connParams.get(MOBILE_PARAM))) { - rcm.setMobile(true); + rcm.setType(Client.Type.mobile); } rcm.setUid(Strings.isEmpty(uid) ? UUID.randomUUID().toString() : uid); rcm.setOwnerSid(ownerSid); if (sipDao.getUid() != null && sipDao.getUid().equals(rcm.getOwnerSid())) { - rcm.setSipTransport(true); + rcm.setType(Client.Type.sip); } rcm.setUserport(conn.getRemotePort()); rcm.setUserip(conn.getRemoteAddress()); @@ -245,14 +245,14 @@ public class ScopeApplicationAdapter extends MultiThreadedApplicationAdapter imp rcm.setHeight(height.intValue()); } if (map.containsKey("screenClient")) { - rcm.setSharing(true); + rcm.setType(Client.Type.sharing); } rcm = sessionManager.add(iapp.updateClient(rcm, false)); if (rcm == null) { _log.warn("Failed to create Client on room connect"); return false; } - IClientUtil.init(conn.getClient(), rcm.getUid(), rcm.isSharing()); + IClientUtil.init(conn.getClient(), rcm.getUid(), Client.Type.sharing == rcm.getType()); // Log the User conferenceLogDao.add(ConferenceLog.Type.clientConnect, @@ -435,7 +435,7 @@ public class ScopeApplicationAdapter extends MultiThreadedApplicationAdapter imp public void roomLeaveByScope(StreamClient client, IScope scope) { try { _log.debug("[roomLeaveByScope] currentClient " + client); - if (client.isSharing() && client.isSharingStarted()) { + if (Client.Type.sharing == client.getType() && client.isSharingStarted()) { sendSharingStoped(client); } if (client.isBroadcasting()) { @@ -461,7 +461,7 @@ public class ScopeApplicationAdapter extends MultiThreadedApplicationAdapter imp // and room except the current disconnected cause it could throw an exception _log.debug("currentScope " + scope); - if (client.isMobile() || client.isSipTransport()) { + if (Client.Type.mobile == client.getType() || Client.Type.sip == client.getType()) { IApplication app = (IApplication)Application.get(wicketApplicationName); app.exit(client.getUid()); } @@ -491,10 +491,7 @@ public class ScopeApplicationAdapter extends MultiThreadedApplicationAdapter imp _log.debug("start streamPublishStart broadcast start: {}, CONN {}", streamName, current); c.setBroadCastId(streamName); - // In case its a screen sharing we start a new Video for that - if (c.isSharing()) { - c.setSharingStarted(true); - } else if (!c.isMobile()) { + if (Client.Type.sharing != c.getType() && Client.Type.mobile != c.getType()) { c.setAvsettings("av"); c.setBroadcasting(true); if (c.getWidth() == 0 || c.getHeight() == 0) { @@ -502,7 +499,7 @@ public class ScopeApplicationAdapter extends MultiThreadedApplicationAdapter imp c.setHeight(240); } } - if (c.isSipTransport()) { + if (Client.Type.sip == c.getType()) { IApplication iapp = (IApplication)Application.get(wicketApplicationName); org.apache.openmeetings.db.entity.basic.Client cl = iapp.getOmOnlineClient(c.getUid()); String newNumber = getSipTransportLastname(c.getRoomId()); @@ -536,7 +533,7 @@ public class ScopeApplicationAdapter extends MultiThreadedApplicationAdapter imp _log.debug("RCL getIsRecording newStream SEND"); recordingService.addRecordingByStreamId(current, c, rcl.getRecordingId()); } - if (rcl.isSharing()) { + if (Client.Type.sharing == rcl.getType()) { _log.debug("RCL getisSharing newStream SEND"); return true; } @@ -552,7 +549,7 @@ public class ScopeApplicationAdapter extends MultiThreadedApplicationAdapter imp JSONObject obj = new JSONObject() .put("ownerSid", c.getOwnerSid()) .put("uid", c.getUid()) - .put("screenShare", c.isSharing()) + .put("type", c.getType()) .put("streamId", current.getClient().getId()) .put("streamName", streamName); WebSocketHelper.sendRoom(new TextRoomMessage(c.getRoomId(), c.getUserId(), RoomMessage.Type.newStream, obj.toString(new NullStringer()))); @@ -603,8 +600,8 @@ public class ScopeApplicationAdapter extends MultiThreadedApplicationAdapter imp } sessionManager.update(rcl); // Notify all clients of the same scope (room) - sendMessageToCurrentScope("closeStream", rcl, rcl.isMobile()); - if (rcl.isSharing()) { + sendMessageToCurrentScope("closeStream", rcl, Client.Type.mobile == rcl.getType()); + if (Client.Type.sharing == rcl.getType()) { sendSharingStoped(rcl); } } catch (Exception e) { @@ -710,7 +707,7 @@ public class ScopeApplicationAdapter extends MultiThreadedApplicationAdapter imp @Override public boolean filter(IConnection conn) { StreamClient rcl = sessionManager.get(IClientUtil.getId(conn.getClient())); - return rcl == null || rcl.isSharing() + return rcl == null || Client.Type.sharing == rcl.getType() || rcl.getRoomId() == null || !rcl.getRoomId().equals(roomId) || userDao.get(rcl.getUserId()) == null; } }.start(); http://git-wip-us.apache.org/repos/asf/openmeetings/blob/3f0e571b/openmeetings-core/src/main/java/org/apache/openmeetings/core/session/SessionManager.java ---------------------------------------------------------------------- diff --git a/openmeetings-core/src/main/java/org/apache/openmeetings/core/session/SessionManager.java b/openmeetings-core/src/main/java/org/apache/openmeetings/core/session/SessionManager.java index c9546e6..528bc71 100644 --- a/openmeetings-core/src/main/java/org/apache/openmeetings/core/session/SessionManager.java +++ b/openmeetings-core/src/main/java/org/apache/openmeetings/core/session/SessionManager.java @@ -31,6 +31,7 @@ import java.util.stream.Collectors; import org.apache.openmeetings.IApplication; import org.apache.openmeetings.db.dao.server.ISessionManager; +import org.apache.openmeetings.db.entity.basic.Client; import org.apache.openmeetings.db.entity.room.StreamClient; import org.apache.wicket.Application; import org.red5.logging.Red5LoggerFactory; @@ -90,7 +91,7 @@ public class SessionManager implements ISessionManager { @Override public List<StreamClient> listByRoom(Long roomId) { return list().stream() - .filter(c -> roomId.equals(c.getRoomId()) && !c.isSharing()) + .filter(c -> roomId.equals(c.getRoomId()) && Client.Type.sharing != c.getType()) .collect(Collectors.toList()); } http://git-wip-us.apache.org/repos/asf/openmeetings/blob/3f0e571b/openmeetings-core/src/main/java/org/apache/openmeetings/core/util/RoomHelper.java ---------------------------------------------------------------------- diff --git a/openmeetings-core/src/main/java/org/apache/openmeetings/core/util/RoomHelper.java b/openmeetings-core/src/main/java/org/apache/openmeetings/core/util/RoomHelper.java index 307823b..3cbea75 100644 --- a/openmeetings-core/src/main/java/org/apache/openmeetings/core/util/RoomHelper.java +++ b/openmeetings-core/src/main/java/org/apache/openmeetings/core/util/RoomHelper.java @@ -33,6 +33,6 @@ public class RoomHelper { .put("broadcastId", sc.getBroadCastId()) .put("width", sc.getWidth()) .put("height", sc.getHeight()) - .put("screenShare", sc.isSharing()); + .put("type", sc.getType()); } } http://git-wip-us.apache.org/repos/asf/openmeetings/blob/3f0e571b/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/basic/Client.java ---------------------------------------------------------------------- diff --git a/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/basic/Client.java b/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/basic/Client.java index e1bca80..bb8907b 100644 --- a/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/basic/Client.java +++ b/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/basic/Client.java @@ -63,13 +63,13 @@ public class Client implements IClient { private final String streamId; private final String uid; private final String broadcastId; - private final boolean sharing; + private final Type type; - public Stream(String uid, String streamId, String broadcastId, boolean sharing) { + public Stream(String uid, String streamId, String broadcastId, Type type) { this.streamId = streamId; this.broadcastId = broadcastId; this.uid = uid; - this.sharing= sharing; + this.type = type; } public String getStreamId() { @@ -80,8 +80,8 @@ public class Client implements IClient { return broadcastId; } - public boolean isSharing() { - return sharing; + public Type getType() { + return type; } public String getUid() { @@ -115,7 +115,7 @@ public class Client implements IClient { @Override public String toString() { - return "Stream [id=" + streamId + ", broadcastId=" + broadcastId + ", sharing=" + sharing + "]"; + return "Stream [id=" + streamId + ", broadcastId=" + broadcastId + ", type=" + type + "]"; } } private final String sessionId; @@ -284,7 +284,7 @@ public class Client implements IClient { break; case share: for (Stream s : streams) { - if (s.isSharing()) { + if (Type.sharing == s.getType()) { streams.remove(s); break; } @@ -295,15 +295,15 @@ public class Client implements IClient { return this; } - public void addStream(String uid, String streamId, String broadcastId, boolean sharing) { - streams.add(new Stream(uid, streamId, broadcastId, sharing)); + public void addStream(String uid, String streamId, String broadcastId, Type type) { + streams.add(new Stream(uid, streamId, broadcastId, type)); } public void removeStream(String broadcastId) { if (broadcastId == null) { return; } - streams.remove(new Stream(null, null, broadcastId, false)); + streams.remove(new Stream(null, null, broadcastId, Type.video)); } public List<Stream> getStreams() { http://git-wip-us.apache.org/repos/asf/openmeetings/blob/3f0e571b/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/basic/IClient.java ---------------------------------------------------------------------- diff --git a/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/basic/IClient.java b/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/basic/IClient.java index 9d1cdc1..c471b9e 100644 --- a/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/basic/IClient.java +++ b/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/basic/IClient.java @@ -28,6 +28,12 @@ import org.apache.openmeetings.db.entity.IDataProviderEntity; * */ public interface IClient extends IDataProviderEntity { + enum Type { + video + , sip + , mobile + , sharing + } String getUid(); String getServerId(); } http://git-wip-us.apache.org/repos/asf/openmeetings/blob/3f0e571b/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 635a8ee..1b6de62 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 @@ -57,8 +57,6 @@ public class StreamClient implements IClient { private String swfurl; private String tcUrl; private boolean nativeSsl = false; - private boolean mobile = false; - private boolean sharing = false; private boolean recordingStarted = false; private boolean sharingStarted = false; private boolean publishStarted = false; @@ -70,9 +68,9 @@ public class StreamClient implements IClient { private Integer interviewPodId = null; private boolean allowRecording = true; private boolean micMuted = false; - private boolean sipTransport = false; private String serverId; private Long roomId; + private Type type = Type.video; public StreamClient() {} @@ -299,22 +297,6 @@ public class StreamClient implements IClient { this.nativeSsl = nativeSsl; } - public boolean isMobile() { - return mobile; - } - - public void setMobile(boolean mobile) { - this.mobile = mobile; - } - - public boolean isSharing() { - return sharing; - } - - public void setSharing(boolean sharing) { - this.sharing = sharing; - } - public boolean isRecordingStarted() { return recordingStarted; } @@ -403,14 +385,6 @@ public class StreamClient implements IClient { this.micMuted = micMuted; } - public boolean isSipTransport() { - return sipTransport; - } - - public void setSipTransport(boolean sipTransport) { - this.sipTransport = sipTransport; - } - @Override public String getServerId() { return serverId; @@ -424,10 +398,18 @@ public class StreamClient implements IClient { return roomId; } + public Type getType() { + return type; + } + + public void setType(Type type) { + this.type = type; + } + @Override public String toString() { return "StreamClient [scope=" + scope + ", uid=" + uid + ", ownerSid=" + ownerSid + ", broadCastId=" - + broadCastId + ", username=" + username + ", userId=" + userId + ", avsettings=" + avsettings + ", sharing=" + sharing + + broadCastId + ", username=" + username + ", userId=" + userId + ", avsettings=" + avsettings + ", type=" + type + ", isBroadcasting=" + broadcasting + "]"; } } http://git-wip-us.apache.org/repos/asf/openmeetings/blob/3f0e571b/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/connection/ConnectionsPanel.java ---------------------------------------------------------------------- diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/connection/ConnectionsPanel.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/connection/ConnectionsPanel.java index edaf596..fa9e8c5 100644 --- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/connection/ConnectionsPanel.java +++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/connection/ConnectionsPanel.java @@ -107,7 +107,7 @@ public class ConnectionsPanel extends AdminPanel { item.add(new Label("login", c.getUsername())); item.add(new Label("since", c.getConnectedSince())); item.add(new Label("scope")); - confirm.setEnabled(!c.isSharing()); + confirm.setEnabled(Client.Type.sharing != c.getType()); } else { Client c = (Client)_c; item.add(new Label("id", "")); http://git-wip-us.apache.org/repos/asf/openmeetings/blob/3f0e571b/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 0035925..38d1189 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 @@ -424,7 +424,7 @@ public class Application extends AuthenticatedWebApplication implements IApplica } Client client = getClientBySid(rcl.getOwnerSid()); if (client == null) { - if (rcl.isMobile()) { + if (Client.Type.mobile == rcl.getType()) { Sessiondata sd = getBean(SessiondataDao.class).check(rcl.getOwnerSid()); UserDao udao = getBean(UserDao.class); User u = udao.get(sd.getUserId()); @@ -440,7 +440,7 @@ public class Application extends AuthenticatedWebApplication implements IApplica WebSocketHelper.sendRoom(new RoomMessage(client.getRoomId(), client.getUserId(), RoomMessage.Type.roomEnter)); } //FIXME TODO rights - } else if (client == null && rcl.isSipTransport()) { + } else if (client == null && Client.Type.sip == rcl.getType()) { rcl.setUsername(SIP_USER_NAME); rcl.setUserId(SIP_USER_ID); //SipTransport enters the room http://git-wip-us.apache.org/repos/asf/openmeetings/blob/3f0e571b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/RoomBroadcaster.java ---------------------------------------------------------------------- diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/RoomBroadcaster.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/RoomBroadcaster.java index 688a57d..e24f26c 100644 --- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/RoomBroadcaster.java +++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/RoomBroadcaster.java @@ -54,6 +54,9 @@ public class RoomBroadcaster { String uid = client.getUid(); StreamClient rcl = Application.get().updateClient(getClient(uid), true); log.debug("----------- sendUpdatedClient "); + // Notify all clients of the same scope (room) + update(client); + broadcast(client.getRoomId(), "clientUpdated", rcl); if (rcl == null) { return; @@ -61,8 +64,5 @@ public class RoomBroadcaster { // Put the mod-flag to true for this client getBean(ISessionManager.class).update(rcl); - // Notify all clients of the same scope (room) - broadcast(client.getRoomId(), "clientUpdated", rcl); - update(client); } } http://git-wip-us.apache.org/repos/asf/openmeetings/blob/3f0e571b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/RoomPanel.java ---------------------------------------------------------------------- diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/RoomPanel.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/RoomPanel.java index c34b54e..1d5dca7 100644 --- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/RoomPanel.java +++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/RoomPanel.java @@ -404,7 +404,7 @@ public class RoomPanel extends BasePanel { case newStream: { JSONObject obj = new JSONObject(((TextRoomMessage)m).getText()); - boolean share = obj.optBoolean("screenShare", false); + Client.Type type = Client.Type.valueOf(obj.getString("type")); String uid = obj.getString("uid"); Client c = getOnlineClient(uid); if (c == null) { @@ -423,7 +423,7 @@ public class RoomPanel extends BasePanel { handler.appendJavaScript(String.format("VideoManager.play(%s);", jo)); } if (getClient().getSid().equals(c.getSid())) { - c.addStream(uid, streamId, broadcastId, share); + c.addStream(uid, streamId, broadcastId, type); } } break; @@ -672,8 +672,8 @@ public class RoomPanel extends BasePanel { } public void broadcast(Client client) { - WebSocketHelper.sendRoom(new TextRoomMessage(getRoom().getId(), getUserId(), RoomMessage.Type.rightUpdated, client.getUid())); RoomBroadcaster.sendUpdatedClient(client); + WebSocketHelper.sendRoom(new TextRoomMessage(getRoom().getId(), getUserId(), RoomMessage.Type.rightUpdated, client.getUid())); } public Room getRoom() { http://git-wip-us.apache.org/repos/asf/openmeetings/blob/3f0e571b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/sidebar/RoomSidebar.java ---------------------------------------------------------------------- diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/sidebar/RoomSidebar.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/sidebar/RoomSidebar.java index 4be5ce0..a78a76e 100644 --- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/sidebar/RoomSidebar.java +++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/sidebar/RoomSidebar.java @@ -394,14 +394,11 @@ public class RoomSidebar extends Panel { if (c == null) { return; } - boolean updated = false; if (!activityAllowed(c, a, room.getRoom()) && room.getClient().hasRight(Right.moderator)) { if (a == Activity.broadcastA || a == Activity.broadcastAV) { - updated = true; c.allow(Room.Right.audio); } if (!room.getRoom().isAudioOnly() && (a == Activity.broadcastV || a == Activity.broadcastAV)) { - updated = true; c.allow(Room.Right.video); } } @@ -416,7 +413,6 @@ public class RoomSidebar extends Panel { return; } Pod pod = c.getPod(); - updated = true; c.setPod(getRequest().getRequestParameters().getParameterValue(PARAM_POD).toOptionalInteger()); if (pod != null && pod != Pod.none && pod != c.getPod()) { //pod has changed, no need to toggle @@ -424,10 +420,7 @@ public class RoomSidebar extends Panel { } else { c.toggle(a); } - room.broadcast(c); - } - if (updated) { - Application.update(c); + room.broadcast(c); //will update client } }
