Permalink
Browse files

Merge branch 'master' of github.com:bigbluebutton/bigbluebutton into …

…try-to-cleanup-connection

Conflicts:
	akka-bbb-apps/src/main/scala/org/bigbluebutton/core/apps/BreakoutRoomApp.scala
  • Loading branch information...
2 parents 7ea0ab7 + f5e19f1 commit 1e8d7a5229f17905f277c057a22f3b765a06911e @ritzalam ritzalam committed Oct 21, 2016
Showing with 1,025 additions and 894 deletions.
  1. +1 −1 akka-bbb-apps/build.sbt
  2. +28 −27 akka-bbb-apps/src/main/java/org/bigbluebutton/core/pubsub/receivers/MeetingMessageReceiver.java
  3. +21 −21 akka-bbb-apps/src/main/scala/org/bigbluebutton/core/BigBlueButtonActor.scala
  4. +3 −1 akka-bbb-apps/src/main/scala/org/bigbluebutton/core/BigBlueButtonInGW.scala
  5. +2 −2 akka-bbb-apps/src/main/scala/org/bigbluebutton/core/JsonMessageDecoder.scala
  6. +15 −15 akka-bbb-apps/src/main/scala/org/bigbluebutton/core/JsonMessageSenderActor.scala
  7. +12 −12 akka-bbb-apps/src/main/scala/org/bigbluebutton/core/LiveMeeting.scala
  8. +2 −2 akka-bbb-apps/src/main/scala/org/bigbluebutton/core/MeetingActor.scala
  9. +7 −6 akka-bbb-apps/src/main/scala/org/bigbluebutton/core/MeetingModel.scala
  10. +0 −1 akka-bbb-apps/src/main/scala/org/bigbluebutton/core/MessageSenderActor.scala
  11. +6 −7 akka-bbb-apps/src/main/scala/org/bigbluebutton/core/Protocol.scala
  12. +4 −5 akka-bbb-apps/src/main/scala/org/bigbluebutton/core/ProtocolMessages.scala
  13. +2 −0 akka-bbb-apps/src/main/scala/org/bigbluebutton/core/api/Constants.scala
  14. +16 −19 akka-bbb-apps/src/main/scala/org/bigbluebutton/core/api/InMessages.scala
  15. +9 −9 akka-bbb-apps/src/main/scala/org/bigbluebutton/core/api/OutMessages.scala
  16. +43 −45 akka-bbb-apps/src/main/scala/org/bigbluebutton/core/apps/BreakoutRoomApp.scala
  17. +15 −12 akka-bbb-apps/src/main/scala/org/bigbluebutton/core/apps/BreakoutRoomModel.scala
  18. +11 −7 ...bbb-apps/src/main/scala/org/bigbluebutton/core/pubsub/senders/MeetingMessageToJsonConverter.scala
  19. +8 −4 akka-bbb-apps/src/test/scala/org/bigbluebutton/core/AppsTestFixtures.scala
  20. +1 −8 akka-bbb-apps/src/test/scala/org/bigbluebutton/core/apps/BreakoutRoomsUtilSpec.scala
  21. +1 −1 akka-bbb-fsesl/build.sbt
  22. +49 −43 bbb-common-message/src/main/java/org/bigbluebutton/messages/CreateMeetingRequest.java
  23. +5 −5 bbb-common-message/src/main/java/org/bigbluebutton/messages/payload/BreakoutRoomJoinURLPayload.java
  24. +13 −8 bbb-common-message/src/main/java/org/bigbluebutton/messages/payload/BreakoutRoomPayload.java
  25. +12 −9 bbb-common-message/src/main/java/org/bigbluebutton/messages/payload/BreakoutRoomRequestPayload.java
  26. +8 −6 ...on-message/src/main/java/org/bigbluebutton/messages/payload/CreateBreakoutRoomRequestPayload.java
  27. +19 −16 ...n-message/src/main/java/org/bigbluebutton/messages/payload/CreateBreakoutRoomsRequestPayload.java
  28. +9 −9 bbb-common-message/src/main/java/org/bigbluebutton/messages/payload/ListenInOnBreakoutPayload.java
  29. +12 −9 ...ommon-message/src/main/java/org/bigbluebutton/messages/payload/RequestBreakoutJoinURLPayload.java
  30. +5 −5 bbb-common-message/src/main/java/org/bigbluebutton/messages/payload/UpdateBreakoutUsersPayload.java
  31. +7 −4 bbb-common-message/src/test/java/org/bigbluebutton/messages/CreateBreakoutRoomRequestTest.java
  32. +5 −4 bbb-common-message/src/test/java/org/bigbluebutton/messages/CreateBreakoutRoomsRequestTest.java
  33. +10 −5 bbb-common-message/src/test/java/org/bigbluebutton/messages/CreateMeetingRequestTest.java
  34. +1 −1 bbb-screenshare/app/build.sbt
  35. +2 −3 bigbluebutton-apps/src/main/java/org/bigbluebutton/red5/client/DeskShareMessageSender.java
  36. +14 −13 bigbluebutton-apps/src/main/java/org/bigbluebutton/red5/client/UserClientMessageSender.java
  37. +0 −1 bigbluebutton-apps/src/main/java/org/bigbluebutton/red5/client/WhiteboardClientMessageSender.java
  38. +0 −3 bigbluebutton-apps/src/main/java/org/bigbluebutton/red5/service/DesktopSharingService.java
  39. +3 −1 bigbluebutton-client/src/org/bigbluebutton/main/events/BreakoutRoomEvent.as
  40. +6 −7 bigbluebutton-client/src/org/bigbluebutton/main/model/users/BBBUser.as
  41. +5 −2 bigbluebutton-client/src/org/bigbluebutton/main/model/users/BreakoutRoom.as
  42. +58 −30 bigbluebutton-client/src/org/bigbluebutton/main/model/users/Conference.as
  43. +5 −5 bigbluebutton-client/src/org/bigbluebutton/main/model/users/UserService.as
  44. +12 −16 bigbluebutton-client/src/org/bigbluebutton/modules/users/services/MessageReceiver.as
  45. +9 −11 bigbluebutton-client/src/org/bigbluebutton/modules/users/services/MessageSender.as
  46. +7 −7 bigbluebutton-client/src/org/bigbluebutton/modules/users/views/BreakoutRoomSettings.mxml
  47. +2 −2 bigbluebutton-client/src/org/bigbluebutton/modules/users/views/RoomActionsRenderer.mxml
  48. +4 −5 bigbluebutton-client/src/org/bigbluebutton/modules/users/views/UsersWindow.mxml
  49. +5 −5 bigbluebutton-config/bin/bbb-record
  50. BIN bigbluebutton-config/slides/blank-presentation.pdf
  51. +1 −0 bigbluebutton-web/build.gradle
  52. +221 −220 bigbluebutton-web/grails-app/conf/bigbluebutton.properties
  53. +1 −0 bigbluebutton-web/grails-app/conf/spring/resources.xml
  54. +9 −10 bigbluebutton-web/grails-app/controllers/org/bigbluebutton/web/controllers/ApiController.groovy
  55. +0 −3 bigbluebutton-web/src/java/org/bigbluebutton/api/ClientConfigService.java
  56. +35 −22 bigbluebutton-web/src/java/org/bigbluebutton/api/MeetingService.java
  57. +99 −69 bigbluebutton-web/src/java/org/bigbluebutton/api/ParamsProcessorUtil.java
  58. +26 −8 bigbluebutton-web/src/java/org/bigbluebutton/api/domain/Meeting.java
  59. +9 −8 bigbluebutton-web/src/java/org/bigbluebutton/api/messaging/MeetingMessageHandler.java
  60. +0 −1 bigbluebutton-web/src/java/org/bigbluebutton/api/messaging/MessageReceiver.java
  61. +7 −5 bigbluebutton-web/src/java/org/bigbluebutton/api/messaging/MessagingService.java
  62. +27 −26 bigbluebutton-web/src/java/org/bigbluebutton/api/messaging/RedisMessagingService.java
  63. +23 −15 bigbluebutton-web/src/java/org/bigbluebutton/api/messaging/RedisStorageService.java
  64. +9 −7 bigbluebutton-web/src/java/org/bigbluebutton/api/messaging/messages/CreateBreakoutRoom.java
  65. +3 −3 bigbluebutton-web/src/java/org/bigbluebutton/api/messaging/messages/EndBreakoutRoom.java
  66. +42 −32 bigbluebutton-web/src/java/org/bigbluebutton/presentation/PresentationUrlDownloadService.java
  67. +0 −2 bigbluebutton-web/src/java/org/bigbluebutton/presentation/imp/Pdf2SwfPageCounter.java
  68. +0 −1 bigbluebutton-web/src/java/org/bigbluebutton/presentation/imp/PdfToSwfSlidesGenerationService.java
  69. +1 −5 bigbluebutton-web/src/java/org/bigbluebutton/presentation/imp/SvgImageCreatorImp.java
  70. +1 −2 ...uebutton-web/src/java/org/bigbluebutton/presentation/imp/SwfSlidesGenerationProgressNotifier.java
  71. +6 −15 bigbluebutton-web/src/java/org/bigbluebutton/web/services/KeepAliveService.java
  72. +11 −0 record-and-playback/core/lib/recordandplayback/events_archiver.rb
@@ -55,7 +55,7 @@ libraryDependencies ++= {
"org.pegdown" % "pegdown" % "1.4.0",
"junit" % "junit" % "4.11",
"com.etaty.rediscala" %% "rediscala" % "1.4.0",
- "commons-codec" % "commons-codec" % "1.8",
+ "commons-codec" % "commons-codec" % "1.10",
"joda-time" % "joda-time" % "2.3",
"com.google.code.gson" % "gson" % "2.5",
"redis.clients" % "jedis" % "2.7.2",
@@ -35,7 +35,7 @@ public MeetingMessageReceiver(IBigBlueButtonInGW bbbGW) {
public void handleMessage(String pattern, String channel, String message) {
if (channel.equalsIgnoreCase(MessagingConstants.TO_MEETING_CHANNEL)) {
- System.out.println("Meeting message: " + channel + " " + message);
+ System.out.println("Meeting message: " + channel + " " + message);
JsonParser parser = new JsonParser();
JsonObject obj = (JsonObject) parser.parse(message);
@@ -45,8 +45,8 @@ public void handleMessage(String pattern, String channel, String message) {
String messageName = header.get("name").getAsString();
if (CreateMeetingRequest.NAME.equals(messageName)) {
Gson gson = new Gson();
- CreateMeetingRequest msg = gson.fromJson(message,
- CreateMeetingRequest.class);
+ CreateMeetingRequest msg = gson.fromJson(message,
+ CreateMeetingRequest.class);
bbbGW.handleBigBlueButtonMessage(msg);
}
}
@@ -59,49 +59,50 @@ public void handleMessage(String pattern, String channel, String message) {
EndMeetingMessage emm = (EndMeetingMessage) msg;
bbbGW.endMeeting(emm.meetingId);
} else if (msg instanceof RegisterUserMessage) {
- RegisterUserMessage emm = (RegisterUserMessage) msg;
- bbbGW.registerUser(emm.meetingID, emm.internalUserId, emm.fullname, emm.role, emm.externUserID, emm.authToken, emm.avatarURL);
+ RegisterUserMessage rum = (RegisterUserMessage) msg;
+ bbbGW.registerUser(rum.meetingID, rum.internalUserId, rum.fullname, rum.role, rum.externUserID, rum.authToken, rum.avatarURL);
} else if (msg instanceof DestroyMeetingMessage) {
- DestroyMeetingMessage emm = (DestroyMeetingMessage) msg;
- bbbGW.destroyMeeting(emm.meetingId);
+ DestroyMeetingMessage dmm = (DestroyMeetingMessage) msg;
+ bbbGW.destroyMeeting(dmm.meetingId);
} else if (msg instanceof ValidateAuthTokenMessage) {
- ValidateAuthTokenMessage emm = (ValidateAuthTokenMessage) msg;
+ ValidateAuthTokenMessage vam = (ValidateAuthTokenMessage) msg;
String sessionId = "tobeimplemented";
- bbbGW.validateAuthToken(emm.meetingId, emm.userId, emm.token, emm.replyTo, sessionId);
+ bbbGW.validateAuthToken(vam.meetingId, vam.userId, vam.token, vam.replyTo, sessionId);
} else if (msg instanceof UserConnectedToGlobalAudio) {
- UserConnectedToGlobalAudio emm = (UserConnectedToGlobalAudio) msg;
+ UserConnectedToGlobalAudio ustga = (UserConnectedToGlobalAudio) msg;
Map<String, Object> logData = new HashMap<String, Object>();
- logData.put("voiceConf", emm.voiceConf);
- logData.put("userId", emm.userid);
- logData.put("username", emm.name);
+ logData.put("voiceConf", ustga.voiceConf);
+ logData.put("userId", ustga.userid);
+ logData.put("username", ustga.name);
logData.put("event", "user_connected_to_global_audio");
logData.put("description", "User connected to global audio.");
+ /*
Gson gson = new Gson();
String logStr = gson.toJson(logData);
-
- //System.out.println("User connected to global audio: data={}", logStr);
-
- bbbGW.userConnectedToGlobalAudio(emm.voiceConf, emm.userid, emm.name);
+ System.out.println("User connected to global audio: data={}", logStr);
+ */
+ bbbGW.userConnectedToGlobalAudio(ustga.voiceConf, ustga.userid, ustga.name);
} else if (msg instanceof UserDisconnectedFromGlobalAudio) {
- UserDisconnectedFromGlobalAudio emm = (UserDisconnectedFromGlobalAudio) msg;
+ UserDisconnectedFromGlobalAudio udfga = (UserDisconnectedFromGlobalAudio) msg;
Map<String, Object> logData = new HashMap<String, Object>();
- logData.put("voiceConf", emm.voiceConf);
- logData.put("userId", emm.userid);
- logData.put("username", emm.name);
+ logData.put("voiceConf", udfga.voiceConf);
+ logData.put("userId", udfga.userid);
+ logData.put("username", udfga.name);
logData.put("event", "user_disconnected_from_global_audio");
logData.put("description", "User disconnected from global audio.");
+ /*
Gson gson = new Gson();
String logStr = gson.toJson(logData);
-
- //System.out.println("User disconnected from global audio: data={}", logStr);
- bbbGW.userDisconnectedFromGlobalAudio(emm.voiceConf, emm.userid, emm.name);
+ System.out.println("User disconnected from global audio: data={}", logStr);
+ */
+ bbbGW.userDisconnectedFromGlobalAudio(udfga.voiceConf, udfga.userid, udfga.name);
}
else if (msg instanceof GetAllMeetingsRequest) {
- GetAllMeetingsRequest emm = (GetAllMeetingsRequest) msg;
+ GetAllMeetingsRequest gamr = (GetAllMeetingsRequest) msg;
bbbGW.getAllMeetings("no_need_of_a_meeting_id");
} else {
System.out.println("Unknown message: [" + message + "]");
@@ -126,8 +127,8 @@ else if (msg instanceof GetAllMeetingsRequest) {
if (msg != null) {
if (msg instanceof KeepAliveMessage) {
- KeepAliveMessage emm = (KeepAliveMessage) msg;
- bbbGW.isAliveAudit(emm.keepAliveId);
+ KeepAliveMessage kam = (KeepAliveMessage) msg;
+ bbbGW.isAliveAudit(kam.keepAliveId);
}
} else {
System.out.println("Unknown message: [" + message + "]");
@@ -11,33 +11,33 @@ import org.bigbluebutton.SystemConfiguration
object BigBlueButtonActor extends SystemConfiguration {
def props(system: ActorSystem,
- eventBus: IncomingEventBus,
- outGW: OutMessageGateway): Props =
+ eventBus: IncomingEventBus,
+ outGW: OutMessageGateway): Props =
Props(classOf[BigBlueButtonActor], system, eventBus, outGW)
}
class BigBlueButtonActor(val system: ActorSystem,
- eventBus: IncomingEventBus, outGW: OutMessageGateway) extends Actor with ActorLogging {
+ eventBus: IncomingEventBus, outGW: OutMessageGateway) extends Actor with ActorLogging {
implicit def executionContext = system.dispatcher
implicit val timeout = Timeout(5 seconds)
private var meetings = new collection.immutable.HashMap[String, RunningMeeting]
def receive = {
- case msg: CreateMeeting => handleCreateMeeting(msg)
- case msg: DestroyMeeting => handleDestroyMeeting(msg)
- case msg: KeepAliveMessage => handleKeepAliveMessage(msg)
- case msg: PubSubPing => handlePubSubPingMessage(msg)
- case msg: ValidateAuthToken => handleValidateAuthToken(msg)
- case msg: GetAllMeetingsRequest => handleGetAllMeetingsRequest(msg)
- case msg: UserJoinedVoiceConfMessage => handleUserJoinedVoiceConfMessage(msg)
- case msg: UserLeftVoiceConfMessage => handleUserLeftVoiceConfMessage(msg)
- case msg: UserLockedInVoiceConfMessage => handleUserLockedInVoiceConfMessage(msg)
- case msg: UserMutedInVoiceConfMessage => handleUserMutedInVoiceConfMessage(msg)
- case msg: UserTalkingInVoiceConfMessage => handleUserTalkingInVoiceConfMessage(msg)
+ case msg: CreateMeeting => handleCreateMeeting(msg)
+ case msg: DestroyMeeting => handleDestroyMeeting(msg)
+ case msg: KeepAliveMessage => handleKeepAliveMessage(msg)
+ case msg: PubSubPing => handlePubSubPingMessage(msg)
+ case msg: ValidateAuthToken => handleValidateAuthToken(msg)
+ case msg: GetAllMeetingsRequest => handleGetAllMeetingsRequest(msg)
+ case msg: UserJoinedVoiceConfMessage => handleUserJoinedVoiceConfMessage(msg)
+ case msg: UserLeftVoiceConfMessage => handleUserLeftVoiceConfMessage(msg)
+ case msg: UserLockedInVoiceConfMessage => handleUserLockedInVoiceConfMessage(msg)
+ case msg: UserMutedInVoiceConfMessage => handleUserMutedInVoiceConfMessage(msg)
+ case msg: UserTalkingInVoiceConfMessage => handleUserTalkingInVoiceConfMessage(msg)
case msg: VoiceConfRecordingStartedMessage => handleVoiceConfRecordingStartedMessage(msg)
- case _ => // do nothing
+ case _ => // do nothing
}
private def findMeetingWithVoiceConfId(voiceConfId: String): Option[RunningMeeting] = {
@@ -117,9 +117,9 @@ class BigBlueButtonActor(val system: ActorSystem,
meetings -= msg.meetingID
log.info("Kick everyone out on meetingId={}", msg.meetingID)
if (m.mProps.isBreakout) {
- log.info("Informing parent meeting {} that a breakout room has been ended {}", m.mProps.externalMeetingID, m.mProps.meetingID)
- eventBus.publish(BigBlueButtonEvent(m.mProps.externalMeetingID,
- BreakoutRoomEnded(m.mProps.externalMeetingID, m.mProps.meetingID)))
+ log.info("Informing parent meeting {} that a breakout room has been ended {}", m.mProps.parentMeetingID, m.mProps.meetingID)
+ eventBus.publish(BigBlueButtonEvent(m.mProps.parentMeetingID,
+ BreakoutRoomEnded(m.mProps.parentMeetingID, m.mProps.meetingID)))
}
outGW.send(new EndAndKickAll(msg.meetingID, m.mProps.recorded))
outGW.send(new DisconnectAllUsers(msg.meetingID))
@@ -149,9 +149,9 @@ class BigBlueButtonActor(val system: ActorSystem,
eventBus.subscribe(m.actorRef, m.mProps.deskshareBridge)
meetings += m.mProps.meetingID -> m
- outGW.send(new MeetingCreated(m.mProps.meetingID, m.mProps.externalMeetingID, m.mProps.recorded, m.mProps.meetingName,
- m.mProps.voiceBridge, msg.mProps.duration, msg.mProps.moderatorPass,
- msg.mProps.viewerPass, msg.mProps.createTime, msg.mProps.createDate))
+ outGW.send(new MeetingCreated(m.mProps.meetingID, m.mProps.externalMeetingID, m.mProps.parentMeetingID,
+ m.mProps.recorded, m.mProps.meetingName, m.mProps.voiceBridge, msg.mProps.duration, msg.mProps.moderatorPass,
+ msg.mProps.viewerPass, msg.mProps.createTime, msg.mProps.createDate, msg.mProps.isBreakout))
m.actorRef ! new InitializeMeeting(m.mProps.meetingID, m.mProps.recorded)
}
@@ -57,6 +57,7 @@ class BigBlueButtonInGW(
val mProps = new MeetingProperties(
msg.payload.id,
msg.payload.externalId,
+ msg.payload.parentId,
msg.payload.name,
msg.payload.record,
msg.payload.voiceConfId,
@@ -69,7 +70,8 @@ class BigBlueButtonInGW(
msg.payload.createTime,
msg.payload.createDate,
red5DeskShareIP, red5DeskShareApp,
- msg.payload.isBreakout)
+ msg.payload.isBreakout,
+ msg.payload.sequence)
eventBus.publish(BigBlueButtonEvent("meeting-manager", new CreateMeeting(msg.payload.id, mProps)))
}
@@ -51,7 +51,7 @@ object JsonMessageDecoder {
def decode(json: String): Option[InMessage] = {
unmarshall(json) match {
case Success(validMsg) => Some(validMsg)
- case Failure(ex) => None
+ case Failure(ex) => None
}
}
@@ -75,4 +75,4 @@ object JsonMessageDecoder {
case _ => throw MessageProcessException("Cannot parse JSON message: [" + msg + "]")
}
}
-}
+}
@@ -38,35 +38,35 @@ class JsonMessageSenderActor(val service: MessageSender)
def receive = {
// Breakout
- case msg: CreateBreakoutRoom => handleCreateBreakoutRoom(msg)
- case msg: EndBreakoutRoom => handleEndBreakoutRoom(msg)
- case msg: BreakoutRoomsListOutMessage => handleBreakoutRoomsList(msg)
+ case msg: CreateBreakoutRoom => handleCreateBreakoutRoom(msg)
+ case msg: EndBreakoutRoom => handleEndBreakoutRoom(msg)
+ case msg: BreakoutRoomsListOutMessage => handleBreakoutRoomsList(msg)
case msg: BreakoutRoomJoinURLOutMessage => handleBreakoutRoomJoinURL(msg)
case msg: BreakoutRoomStartedOutMessage => handleBreakoutRoomStarted(msg)
- case msg: BreakoutRoomEndedOutMessage => handleBreakoutRoomEnded(msg)
+ case msg: BreakoutRoomEndedOutMessage => handleBreakoutRoomEnded(msg)
case msg: UpdateBreakoutUsersOutMessage => handleUpdateBreakoutUsers(msg)
- case msg: MeetingTimeRemainingUpdate => handleMeetingTimeRemainingUpdate(msg)
+ case msg: MeetingTimeRemainingUpdate => handleMeetingTimeRemainingUpdate(msg)
- case _ => // do nothing
+ case _ => // do nothing
}
// Breakout
private def handleBreakoutRoomStarted(msg: BreakoutRoomStartedOutMessage) {
- val payload = new BreakoutRoomPayload(msg.meetingId, msg.breakout.breakoutId, msg.breakout.name)
+ val payload = new BreakoutRoomPayload(msg.parentMeetingId, msg.breakout.meetingId, msg.breakout.externalMeetingId, msg.breakout.name, msg.breakout.sequence)
val request = new BreakoutRoomStarted(payload)
service.send(MessagingConstants.FROM_MEETING_CHANNEL, request.toJson)
}
private def handleBreakoutRoomEnded(msg: BreakoutRoomEndedOutMessage) {
- val payload = new BreakoutRoomPayload(msg.meetingId, msg.breakoutId, "")
+ val payload = new BreakoutRoomPayload(msg.parentMeetingId, msg.meetingId, "", "", 0)
val request = new BreakoutRoomClosed(payload)
service.send(MessagingConstants.FROM_MEETING_CHANNEL, request.toJson)
}
private def handleUpdateBreakoutUsers(msg: UpdateBreakoutUsersOutMessage) {
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 payload = new UpdateBreakoutUsersPayload(msg.parentMeetingId, msg.breakoutMeetingId, users)
val request = new UpdateBreakoutUsers(payload)
service.send(MessagingConstants.FROM_MEETING_CHANNEL, request.toJson())
}
@@ -85,29 +85,29 @@ class JsonMessageSenderActor(val service: MessageSender)
private def handleBreakoutRoomsList(msg: BreakoutRoomsListOutMessage) {
val rooms = new java.util.ArrayList[BreakoutRoomPayload]()
- msg.rooms.foreach(r => rooms.add(new BreakoutRoomPayload(msg.meetingId, r.breakoutId, r.name)))
+ msg.rooms.foreach(r => rooms.add(new BreakoutRoomPayload(msg.meetingId, r.meetingId, r.externalMeetingId, r.name, r.sequence)))
val payload = new BreakoutRoomsListPayload(msg.meetingId, rooms, msg.roomsReady)
val request = new BreakoutRoomsList(payload)
service.send(MessagingConstants.FROM_MEETING_CHANNEL, request.toJson())
}
private def handleCreateBreakoutRoom(msg: CreateBreakoutRoom) {
- val payload = new CreateBreakoutRoomRequestPayload(msg.room.breakoutId, msg.room.parentId, msg.room.name,
- msg.room.voiceConfId, msg.room.viewerPassword, msg.room.moderatorPassword,
+ val payload = new CreateBreakoutRoomRequestPayload(msg.room.breakoutMeetingId, msg.room.parentId, msg.room.name,
+ msg.room.sequence, msg.room.voiceConfId, msg.room.viewerPassword, msg.room.moderatorPassword,
msg.room.durationInMinutes, msg.room.sourcePresentationId, msg.room.sourcePresentationSlide, msg.room.record)
val request = new CreateBreakoutRoomRequest(payload)
service.send(MessagingConstants.FROM_MEETING_CHANNEL, request.toJson())
}
private def handleEndBreakoutRoom(msg: EndBreakoutRoom) {
- val payload = new EndBreakoutRoomRequestPayload(msg.breakoutId)
+ val payload = new EndBreakoutRoomRequestPayload(msg.breakoutMeetingId)
val request = new EndBreakoutRoomRequest(payload)
service.send(MessagingConstants.FROM_MEETING_CHANNEL, request.toJson())
}
def handleBreakoutRoomJoinURL(msg: BreakoutRoomJoinURLOutMessage) {
- val payload = new BreakoutRoomJoinURLPayload(msg.meetingId,
- msg.breakoutId, msg.userId, msg.joinURL)
+ val payload = new BreakoutRoomJoinURLPayload(msg.parentMeetingId,
+ msg.breakoutMeetingId, msg.userId, msg.joinURL)
val request = new BreakoutRoomJoinURL(payload)
service.send(MessagingConstants.FROM_MEETING_CHANNEL, request.toJson)
}
@@ -12,17 +12,17 @@ import org.bigbluebutton.core.apps.CaptionApp
import org.bigbluebutton.core.apps.CaptionModel
class LiveMeeting(val mProps: MeetingProperties,
- val eventBus: IncomingEventBus,
- val outGW: OutMessageGateway,
- val chatModel: ChatModel,
- val layoutModel: LayoutModel,
- val meetingModel: MeetingModel,
- val usersModel: UsersModel,
- val pollModel: PollModel,
- val wbModel: WhiteboardModel,
- val presModel: PresentationModel,
- val breakoutModel: BreakoutRoomModel,
- val captionModel: CaptionModel)(implicit val context: ActorContext)
+ val eventBus: IncomingEventBus,
+ val outGW: OutMessageGateway,
+ val chatModel: ChatModel,
+ val layoutModel: LayoutModel,
+ val meetingModel: MeetingModel,
+ val usersModel: UsersModel,
+ val pollModel: PollModel,
+ val wbModel: WhiteboardModel,
+ val presModel: PresentationModel,
+ val breakoutModel: BreakoutRoomModel,
+ val captionModel: CaptionModel)(implicit val context: ActorContext)
extends UsersApp with PresentationApp
with LayoutApp with ChatApp with WhiteboardApp with PollApp
with BreakoutRoomApp with CaptionApp {
@@ -56,7 +56,7 @@ class LiveMeeting(val mProps: MeetingProperties,
}
def startCheckingIfWeNeedToEndVoiceConf() {
- if (usersModel.numWebUsers == 0) {
+ if (usersModel.numWebUsers == 0 && !mProps.isBreakout) {
meetingModel.lastWebUserLeft()
log.debug("MonitorNumberOfWebUsers started for meeting [" + mProps.meetingID + "]")
}
@@ -37,8 +37,8 @@ class MeetingActorInternal(val mProps: MeetingProperties,
if (mProps.isBreakout) {
// This is a breakout room. Inform our parent meeting that we have been successfully created.
eventBus.publish(BigBlueButtonEvent(
- mProps.externalMeetingID,
- BreakoutRoomCreated(mProps.externalMeetingID, mProps.meetingID)))
+ mProps.parentMeetingID,
+ BreakoutRoomCreated(mProps.parentMeetingID, mProps.meetingID)))
}
def receive = {
Oops, something went wrong.

0 comments on commit 1e8d7a5

Please sign in to comment.