diff --git a/akka-bbb-apps/src/main/scala/org/bigbluebutton/core/JsonMessageSenderActor.scala b/akka-bbb-apps/src/main/scala/org/bigbluebutton/core/JsonMessageSenderActor.scala index 430d175dec18..1ae7fb357b5c 100755 --- a/akka-bbb-apps/src/main/scala/org/bigbluebutton/core/JsonMessageSenderActor.scala +++ b/akka-bbb-apps/src/main/scala/org/bigbluebutton/core/JsonMessageSenderActor.scala @@ -62,7 +62,9 @@ class JsonMessageSenderActor(val service: MessageSender) } private def handleUpdateBreakoutUsers(msg: UpdateBreakoutUsersOutMessage) { - val payload = new UpdateBreakoutUsersPayload(msg.meetingId, msg.breakoutId, msg.numberOfUsers) + val users = new java.util.ArrayList[BreakoutUserPayload]() + msg.users.foreach(x => users.add(new BreakoutUserPayload(x.id, x.name))) + val payload = new UpdateBreakoutUsersPayload(msg.meetingId, msg.breakoutId, users) val request = new UpdateBreakoutUsers(payload) service.send(MessagingConstants.FROM_MEETING_CHANNEL, request.toJson()) } diff --git a/akka-bbb-apps/src/main/scala/org/bigbluebutton/core/api/OutMessages.scala b/akka-bbb-apps/src/main/scala/org/bigbluebutton/core/api/OutMessages.scala index 5163b25b5bb5..602564e931d1 100755 --- a/akka-bbb-apps/src/main/scala/org/bigbluebutton/core/api/OutMessages.scala +++ b/akka-bbb-apps/src/main/scala/org/bigbluebutton/core/api/OutMessages.scala @@ -37,7 +37,7 @@ case class BreakoutRoomOutPayload(breakoutId: String, name: String, parentId: St case class BreakoutRoomJoinURLOutMessage(meetingId: String, recorded: Boolean, breakoutId: String, userId: String, joinURL: String) extends IOutMessage case class BreakoutRoomStartedOutMessage(meetingId: String, recorded: Boolean, breakout: BreakoutRoomBody) extends IOutMessage case class BreakoutRoomBody(name: String, breakoutId: String) -case class UpdateBreakoutUsersOutMessage(meetingId: String, recorded: Boolean, breakoutId: String, numberOfUsers: Integer) extends IOutMessage +case class UpdateBreakoutUsersOutMessage(meetingId: String, recorded: Boolean, breakoutId: String, users: Vector[BreakoutUser]) extends IOutMessage case class MeetingTimeRemainingUpdate(meetingId: String, recorded: Boolean, timeRemaining: Int) extends IOutMessage case class BreakoutRoomsTimeRemainingUpdateOutMessage(meetingId: String, recorded: Boolean, timeRemaining: Int) extends IOutMessage case class BreakoutRoomEndedOutMessage(meetingId: String, breakoutId: String) extends IOutMessage diff --git a/akka-bbb-apps/src/main/scala/org/bigbluebutton/core/apps/BreakoutRoomApp.scala b/akka-bbb-apps/src/main/scala/org/bigbluebutton/core/apps/BreakoutRoomApp.scala index 0492d433ea80..b6beebc871f0 100755 --- a/akka-bbb-apps/src/main/scala/org/bigbluebutton/core/apps/BreakoutRoomApp.scala +++ b/akka-bbb-apps/src/main/scala/org/bigbluebutton/core/apps/BreakoutRoomApp.scala @@ -90,7 +90,7 @@ trait BreakoutRoomApp extends SystemConfiguration { def handleBreakoutRoomUsersUpdate(msg: BreakoutRoomUsersUpdate) { breakoutModel.updateBreakoutUsers(msg.breakoutId, msg.users) foreach { room => - outGW.send(new UpdateBreakoutUsersOutMessage(mProps.meetingID, mProps.recorded, msg.breakoutId, room.users.length)) + outGW.send(new UpdateBreakoutUsersOutMessage(mProps.meetingID, mProps.recorded, msg.breakoutId, room.users)) } } diff --git a/akka-bbb-apps/src/main/scala/org/bigbluebutton/core/pubsub/senders/MeetingMessageToJsonConverter.scala b/akka-bbb-apps/src/main/scala/org/bigbluebutton/core/pubsub/senders/MeetingMessageToJsonConverter.scala index 24c2d87d3f96..a8c21a7fb0b2 100755 --- a/akka-bbb-apps/src/main/scala/org/bigbluebutton/core/pubsub/senders/MeetingMessageToJsonConverter.scala +++ b/akka-bbb-apps/src/main/scala/org/bigbluebutton/core/pubsub/senders/MeetingMessageToJsonConverter.scala @@ -177,7 +177,7 @@ object MeetingMessageToJsonConverter { payload.put("meetingId", msg.meetingId) payload.put("breakoutId", msg.breakoutId) payload.put("recorded", msg.recorded) - payload.put("numberOfUsers", msg.numberOfUsers) + payload.put("users", msg.users.toArray) val header = Util.buildHeader(UpdateBreakoutUsers.NAME, None) Util.buildJson(header, payload) diff --git a/bbb-common-message/src/main/java/org/bigbluebutton/messages/payload/UpdateBreakoutUsersPayload.java b/bbb-common-message/src/main/java/org/bigbluebutton/messages/payload/UpdateBreakoutUsersPayload.java index 1350ecf75568..f96d2ca064d9 100755 --- a/bbb-common-message/src/main/java/org/bigbluebutton/messages/payload/UpdateBreakoutUsersPayload.java +++ b/bbb-common-message/src/main/java/org/bigbluebutton/messages/payload/UpdateBreakoutUsersPayload.java @@ -1,15 +1,16 @@ package org.bigbluebutton.messages.payload; +import java.util.ArrayList; + public class UpdateBreakoutUsersPayload { - public final Integer numberOfUsers; + public final ArrayList users; public final String breakoutId; public final String meetingId; - public UpdateBreakoutUsersPayload(String meetingId, String breakoutId, - Integer numberOfUsers) { + public UpdateBreakoutUsersPayload(String meetingId, String breakoutId, ArrayList users) { this.meetingId = meetingId; this.breakoutId = breakoutId; - this.numberOfUsers = numberOfUsers; + this.users = users; } } diff --git a/bigbluebutton-apps/src/main/java/org/bigbluebutton/red5/client/UserClientMessageSender.java b/bigbluebutton-apps/src/main/java/org/bigbluebutton/red5/client/UserClientMessageSender.java index 48cab96993d6..8bae1ded680b 100755 --- a/bigbluebutton-apps/src/main/java/org/bigbluebutton/red5/client/UserClientMessageSender.java +++ b/bigbluebutton-apps/src/main/java/org/bigbluebutton/red5/client/UserClientMessageSender.java @@ -585,7 +585,7 @@ private void processUpdateBreakoutUsers(UpdateBreakoutUsers msg) { Map args = new HashMap(); args.put("meetingId", msg.payload.meetingId); args.put("breakoutId", msg.payload.breakoutId); - args.put("numberOfUsers", msg.payload.numberOfUsers); + args.put("users", msg.payload.users); Map message = new HashMap(); Gson gson = new Gson(); diff --git a/bigbluebutton-client/src/org/bigbluebutton/main/model/users/BreakoutRoom.as b/bigbluebutton-client/src/org/bigbluebutton/main/model/users/BreakoutRoom.as index 4161909c7f80..b94a55ee3d22 100644 --- a/bigbluebutton-client/src/org/bigbluebutton/main/model/users/BreakoutRoom.as +++ b/bigbluebutton-client/src/org/bigbluebutton/main/model/users/BreakoutRoom.as @@ -18,6 +18,8 @@ */ package org.bigbluebutton.main.model.users { + import mx.collections.ArrayCollection; + [Bindable] public class BreakoutRoom { public static const NONE:String = "none"; @@ -30,9 +32,18 @@ package org.bigbluebutton.main.model.users { public var name:String; - public var numberOfUsers:int; + public var users:ArrayCollection; // Can be one of three following values self, none, other public var listenStatus:String = NONE; + + public function BreakoutRoom() { + users = new ArrayCollection(); + } + + public function get numberOfUsers():int { + return users.length; + } + } } diff --git a/bigbluebutton-client/src/org/bigbluebutton/main/model/users/Conference.as b/bigbluebutton-client/src/org/bigbluebutton/main/model/users/Conference.as index a0eb2ae28a3b..48517929356d 100644 --- a/bigbluebutton-client/src/org/bigbluebutton/main/model/users/Conference.as +++ b/bigbluebutton-client/src/org/bigbluebutton/main/model/users/Conference.as @@ -536,10 +536,10 @@ package org.bigbluebutton.main.model.users { breakoutRooms.refresh(); } - public function updateBreakoutRoomUsers(breakoutId:String, users:int):void { + public function updateBreakoutRoomUsers(breakoutId:String, users:Array):void { var room:Object = getBreakoutRoom(breakoutId); if (room != null) { - BreakoutRoom(room).numberOfUsers = users; + BreakoutRoom(room).users = new ArrayCollection(users); } } diff --git a/bigbluebutton-client/src/org/bigbluebutton/modules/users/services/MessageReceiver.as b/bigbluebutton-client/src/org/bigbluebutton/modules/users/services/MessageReceiver.as index bbfeae8a742e..7483fc2becd2 100644 --- a/bigbluebutton-client/src/org/bigbluebutton/modules/users/services/MessageReceiver.as +++ b/bigbluebutton-client/src/org/bigbluebutton/modules/users/services/MessageReceiver.as @@ -620,9 +620,9 @@ package org.bigbluebutton.modules.users.services private function handleUpdateBreakoutUsers(msg:Object):void{ var map:Object = JSON.parse(msg.msg); - UserManager.getInstance().getConference().updateBreakoutRoomUsers(map.breakoutId, map.numberOfUsers); + UserManager.getInstance().getConference().updateBreakoutRoomUsers(map.breakoutId, map.users); } - + private function handleTimeRemainingUpdate(msg:Object):void { var map:Object = JSON.parse(msg.msg); var e:BreakoutRoomEvent = new BreakoutRoomEvent(BreakoutRoomEvent.UPDATE_REMAINING_TIME_BREAKOUT);