diff --git a/bigbluebutton-apps/src/main/java/org/bigbluebutton/conference/BigBlueButtonApplication.java b/bigbluebutton-apps/src/main/java/org/bigbluebutton/conference/BigBlueButtonApplication.java index 17347e4dd4e808fd6694712aa55bc234a59f5f55..6010fd0e53239103318680f48259a2ddbb89842d 100755 --- a/bigbluebutton-apps/src/main/java/org/bigbluebutton/conference/BigBlueButtonApplication.java +++ b/bigbluebutton-apps/src/main/java/org/bigbluebutton/conference/BigBlueButtonApplication.java @@ -25,6 +25,7 @@ import org.bigbluebutton.conference.service.recorder.RecorderApplication; import org.red5.logging.Red5LoggerFactory; import org.red5.server.adapter.IApplication; import org.red5.server.adapter.MultiThreadedApplicationAdapter; +import org.red5.server.api.IClient; import org.red5.server.api.IConnection; import org.red5.server.api.IContext; import org.red5.server.api.scope.IScope; @@ -40,7 +41,40 @@ public class BigBlueButtonApplication extends MultiThreadedApplicationAdapter { private RecorderApplication recorderApplication; private AbstractApplicationContext appCtx; private ConnectionInvokerService connInvokerService; - + + @Override + public boolean appConnect(IConnection conn, Object[] params) { + log.debug("appConnect"); + return true; + } + + @Override + public void appDisconnect(IConnection conn) { + log.debug("appDisconnect"); + } + + @Override + public boolean appJoin(IClient client, IScope scope) { + log.debug("appJoin: " + scope.getName()); + return true; + } + + @Override + public void appLeave(IClient client, IScope scope) { + log.debug("appLeave: " + scope.getName()); + } + + @Override + public boolean roomJoin(IClient client, IScope scope) { + log.debug("roomJoin " + scope.getName(), scope.getParent().getName()); + return true; + } + + @Override + public void roomLeave(IClient client, IScope scope) { + log.debug("roomLeave: " + scope.getName()); + } + @Override public boolean appStart(IScope app) { log.debug("Starting BigBlueButton "); @@ -48,10 +82,11 @@ public class BigBlueButtonApplication extends MultiThreadedApplicationAdapter { appCtx = (AbstractApplicationContext) context.getApplicationContext(); appCtx.addApplicationListener(new ShutdownHookListener()); appCtx.registerShutdownHook(); + super.appStart(app); connInvokerService.start(); - return super.appStart(app); + return true; } @Override @@ -65,8 +100,10 @@ public class BigBlueButtonApplication extends MultiThreadedApplicationAdapter { public boolean roomStart(IScope room) { log.debug("Starting room [" + room.getName() + "]."); assert participantsApplication != null; + super.roomStart(room); + connInvokerService.addScope(room.getName(), room); - return super.roomStart(room); + return true; } @Override @@ -117,10 +154,13 @@ public class BigBlueButtonApplication extends MultiThreadedApplicationAdapter { "session=" + sessionName + ",voiceConf=" + voiceBridge + ",room=" + room + ",externalUserid=" + externalUserID; log.debug("User [{}] connected to room [{}]", debugInfo, room); participantsApplication.createRoom(room); - super.roomConnect(connection, params); - + + super.roomConnect(connection, params); + connInvokerService.addConnection(bbbSession.getInternalUserID(), connection); - return true; + + return true; + } @Override diff --git a/bigbluebutton-apps/src/main/java/org/bigbluebutton/conference/service/chat/ChatHandler.java b/bigbluebutton-apps/src/main/java/org/bigbluebutton/conference/service/chat/ChatHandler.java index 589dca753a0346036f651fe1ec3c3f22405326f8..ea7a2c5b66e10a872974d96412d004a01ce2ba2d 100755 --- a/bigbluebutton-apps/src/main/java/org/bigbluebutton/conference/service/chat/ChatHandler.java +++ b/bigbluebutton-apps/src/main/java/org/bigbluebutton/conference/service/chat/ChatHandler.java @@ -69,15 +69,7 @@ public class ChatHandler extends ApplicationAdapter implements IApplication{ public void appStop(IScope scope) { log.debug("appStop: " + scope.getName()); } - - @Override - public boolean roomConnect(IConnection connection, Object[] params) { - ChatEventRecorder recorder = new ChatEventRecorder(connection.getScope().getName(), recorderApplication); - chatApplication.addRoomListener(connection.getScope().getName(), recorder); - - return true; - } - + @Override public void roomDisconnect(IConnection connection) { log.debug("roomDisconnect"); @@ -94,6 +86,14 @@ public class ChatHandler extends ApplicationAdapter implements IApplication{ log.debug("roomLeave: " + scope.getName()); } + @Override + public boolean roomConnect(IConnection connection, Object[] params) { + ChatEventRecorder recorder = new ChatEventRecorder(connection.getScope().getName(), recorderApplication); + chatApplication.addRoomListener(connection.getScope().getName(), recorder); + + return true; + } + @Override public boolean roomStart(IScope scope) { log.debug("roomStart " + scope.getName()); diff --git a/bigbluebutton-apps/src/main/java/org/bigbluebutton/conference/service/layout/LayoutHandler.java b/bigbluebutton-apps/src/main/java/org/bigbluebutton/conference/service/layout/LayoutHandler.java index ce570d073f7ca8f729d1c904f88d7f6a38cd7146..e8655fca3c8743c9e8d53f2d17532645a466303d 100755 --- a/bigbluebutton-apps/src/main/java/org/bigbluebutton/conference/service/layout/LayoutHandler.java +++ b/bigbluebutton-apps/src/main/java/org/bigbluebutton/conference/service/layout/LayoutHandler.java @@ -23,7 +23,6 @@ import org.red5.server.adapter.ApplicationAdapter; import org.red5.server.adapter.IApplication; import org.red5.server.api.IClient; import org.red5.server.api.IConnection; -import org.red5.server.api.Red5; import org.red5.server.api.scope.IScope; import org.red5.server.api.so.ISharedObject; import org.slf4j.Logger; @@ -38,74 +37,64 @@ public class LayoutHandler extends ApplicationAdapter implements IApplication { @Override public boolean appConnect(IConnection conn, Object[] params) { - log.debug(APP + ":appConnect"); + log.debug("appConnect"); return true; } @Override public void appDisconnect(IConnection conn) { - log.debug( APP + ":appDisconnect"); + log.debug("appDisconnect"); } @Override public boolean appJoin(IClient client, IScope scope) { - log.debug( APP + ":appJoin " + scope.getName()); + log.debug("appJoin: " + scope.getName()); return true; } @Override public void appLeave(IClient client, IScope scope) { - log.debug(APP + ":appLeave " + scope.getName()); + log.debug("appLeave: " + scope.getName()); } @Override public boolean appStart(IScope scope) { - log.debug(APP + ":appStart " + scope.getName()); + this.scope = scope; + log.debug("appStart: " + scope.getName()); return true; } @Override public void appStop(IScope scope) { - log.debug(APP + ":appStop " + scope.getName()); + log.debug("appStop: " + scope.getName()); } - - @Override - public boolean roomConnect(IConnection connection, Object[] params) { - log.debug(APP + ":roomConnect"); - - IScope scope = Red5.getConnectionLocal().getScope(); - - if (!hasSharedObject(scope, LAYOUT_SO)) { - if (createSharedObject(scope, LAYOUT_SO, false)) { - ISharedObject so = getSharedObject(connection.getScope(), LAYOUT_SO); - log.debug("Setting up Listener"); - LayoutSender sender = new LayoutSender(so); - String room = connection.getScope().getName(); - log.debug("Adding event listener to " + room); - log.debug("Adding room listener"); - layoutApplication.addRoomListener(room, sender); - log.debug("Done setting up listener"); - return true; - } - } - - return false; - } - + @Override public void roomDisconnect(IConnection connection) { - log.debug(APP + ":roomDisconnect"); + log.debug("roomDisconnect"); } @Override public boolean roomJoin(IClient client, IScope scope) { - log.debug(APP + ":roomJoin " + scope.getName() + " - " + scope.getParent().getName()); + log.debug("roomJoin " + scope.getName(), scope.getParent().getName()); return true; } - + @Override - public void roomLeave(IClient client, IScope scope) { - log.debug(APP + ":roomLeave " + scope.getName()); + public boolean roomConnect(IConnection connection, Object[] params) { + System.out.println("********* " + APP + ":roomConnect"); + + log.debug(APP + ":roomConnect"); + + ISharedObject so = getSharedObject(connection.getScope(), LAYOUT_SO); + log.debug("Setting up Listener"); + LayoutSender sender = new LayoutSender(so); + String room = connection.getScope().getName(); + log.debug("Adding event listener to " + room); + log.debug("Adding room listener"); + layoutApplication.addRoomListener(room, sender); + log.debug("Done setting up listener"); + return true; } @Override @@ -126,6 +115,8 @@ public class LayoutHandler extends ApplicationAdapter implements IApplication { } public void setLayoutApplication(LayoutApplication a) { + System.out.println("****** Setting layout application ********"); + log.debug("Setting layout application"); layoutApplication = a; layoutApplication.handler = this; diff --git a/bigbluebutton-apps/src/main/java/org/bigbluebutton/conference/service/participants/ParticipantsHandler.java b/bigbluebutton-apps/src/main/java/org/bigbluebutton/conference/service/participants/ParticipantsHandler.java index cd2b6428e4cc4072aa4fffbfd97c7a245c855c20..a980b922bab9ffe7a47c1be47828d01c59f174e6 100755 --- a/bigbluebutton-apps/src/main/java/org/bigbluebutton/conference/service/participants/ParticipantsHandler.java +++ b/bigbluebutton-apps/src/main/java/org/bigbluebutton/conference/service/participants/ParticipantsHandler.java @@ -43,62 +43,57 @@ public class ParticipantsHandler extends ApplicationAdapter implements IApplicat @Override public boolean appConnect(IConnection conn, Object[] params) { - log.debug(APP + ":appConnect"); + log.debug("appConnect"); return true; } @Override public void appDisconnect(IConnection conn) { - log.debug( APP + ":appDisconnect"); + log.debug("appDisconnect"); } @Override public boolean appJoin(IClient client, IScope scope) { - log.debug( APP + ":appJoin " + scope.getName()); + log.debug("appJoin: " + scope.getName()); return true; } @Override public void appLeave(IClient client, IScope scope) { - log.debug(APP + ":appLeave " + scope.getName()); + log.debug("appLeave: " + scope.getName()); } @Override public boolean appStart(IScope scope) { - log.debug(APP + ":appStart " + scope.getName()); + this.scope = scope; + log.debug("appStart: " + scope.getName()); return true; } @Override public void appStop(IScope scope) { - log.debug(APP + ":appStop " + scope.getName()); + log.debug("appStop: " + scope.getName()); } - + + @Override + public boolean roomStart(IScope scope) { + return true; + } + @Override public boolean roomConnect(IConnection connection, Object[] params) { log.debug(APP + ":roomConnect"); - - IScope scope = Red5.getConnectionLocal().getScope(); - - if (!hasSharedObject(scope, PARTICIPANTS_SO)) { - if (createSharedObject(scope, PARTICIPANTS_SO, false)) { - ISharedObject so = getSharedObject(connection.getScope(), PARTICIPANTS_SO); - ParticipantsEventSender sender = new ParticipantsEventSender(so); - ParticipantsEventRecorder recorder = new ParticipantsEventRecorder(connection.getScope().getName(), recorderApplication); + + ISharedObject so = getSharedObject(connection.getScope(), PARTICIPANTS_SO); + ParticipantsEventSender sender = new ParticipantsEventSender(so); + ParticipantsEventRecorder recorder = new ParticipantsEventRecorder(connection.getScope().getName(), recorderApplication); - log.debug("Adding room listener " + connection.getScope().getName()); - participantsApplication.addRoomListener(connection.getScope().getName(), recorder); - participantsApplication.addRoomListener(connection.getScope().getName(), sender); - log.debug("Done setting up recorder and listener"); - } - } - - return false; - } - - @Override - public void roomDisconnect(IConnection connection) { - log.debug(APP + ":roomDisconnect"); + log.debug("Adding room listener " + connection.getScope().getName()); + participantsApplication.addRoomListener(connection.getScope().getName(), recorder); + participantsApplication.addRoomListener(connection.getScope().getName(), sender); + log.debug("Done setting up recorder and listener"); + + return true; } @Override @@ -119,12 +114,6 @@ public class ParticipantsHandler extends ApplicationAdapter implements IApplicat } } - @Override - public boolean roomStart(IScope scope) { - log.debug(APP + " - roomStart "+scope.getName()); - return true; - } - @Override public void roomStop(IScope scope) { log.debug(APP + ":roomStop " + scope.getName()); diff --git a/bigbluebutton-apps/src/main/java/org/bigbluebutton/conference/service/poll/PollHandler.java b/bigbluebutton-apps/src/main/java/org/bigbluebutton/conference/service/poll/PollHandler.java index e04189a222f863fbf3d6cdf1e8ab6cb28bfbf492..5a95fb4c80190717fb0196651a6cf32901b23d9a 100755 --- a/bigbluebutton-apps/src/main/java/org/bigbluebutton/conference/service/poll/PollHandler.java +++ b/bigbluebutton-apps/src/main/java/org/bigbluebutton/conference/service/poll/PollHandler.java @@ -20,90 +20,18 @@ package org.bigbluebutton.conference.service.poll; import org.red5.server.adapter.IApplication; -import org.red5.server.api.IClient; -import org.red5.server.api.IConnection; -import org.red5.server.api.scope.IScope; import org.slf4j.Logger; import org.red5.logging.Red5LoggerFactory; -import org.red5.server.api.so.ISharedObject; import org.red5.server.adapter.ApplicationAdapter; -import org.red5.server.api.Red5; -import org.bigbluebutton.conference.BigBlueButtonSession; -import org.bigbluebutton.conference.Constants; +import org.red5.server.api.scope.IScope; import org.bigbluebutton.conference.service.recorder.RecorderApplication; -//import org.bigbluebutton.conference.service.recorder.poll.PollEventRecorder; -public class PollHandler extends ApplicationAdapter implements IApplication{ +public class PollHandler extends ApplicationAdapter implements IApplication { private static Logger log = Red5LoggerFactory.getLogger( PollHandler.class, "bigbluebutton" ); - private static final String POLL = "POLL"; - private static final String POLL_SO = "pollSO"; private static final String APP = "POLL"; - - private RecorderApplication recorderApplication; private PollApplication pollApplication; - private IScope scope; - - - @Override - public boolean appConnect(IConnection conn, Object[] params) { - log.debug(APP + "appConnect"); - return true; - } - - @Override - public void appDisconnect(IConnection conn) { - log.debug(APP + "appDisconnect"); - } - - @Override - public boolean appJoin(IClient client, IScope scope) { - log.debug(APP + "appJoin: " + scope.getName()); - return true; - } - - @Override - public void appLeave(IClient client, IScope scope) { - log.debug(APP + "appLeave: " + scope.getName()); - } - - @Override - public boolean appStart(IScope scope) { - this.scope = scope; - log.debug(APP + "appStart: " + scope.getName()); - return true; - } - @Override - public void appStop(IScope scope) { - log.debug(APP + "appStop: " + scope.getName()); - } - - @Override - public boolean roomConnect(IConnection connection, Object[] params) { - log.debug("roomConnect"); - log.debug(APP + "Setting up recorder"); - log.debug(APP + "adding event recorder to " + connection.getScope().getName()); - log.debug(APP + "Adding room listener"); - log.debug(APP + "Done setting up recorder and listener"); - return true; - } - - @Override - public void roomDisconnect(IConnection connection) { - log.debug(APP + "roomDisconnect"); - } - - @Override - public boolean roomJoin(IClient client, IScope scope) { - log.debug(APP + "roomJoin " + scope.getName(), scope.getParent().getName()); - return true; - } - - @Override - public void roomLeave(IClient client, IScope scope) { - log.debug(APP + "roomLeave: " + scope.getName()); - } @Override public boolean roomStart(IScope scope) { @@ -128,12 +56,8 @@ public class PollHandler extends ApplicationAdapter implements IApplication{ public void setRecorderApplication(RecorderApplication a) { log.debug(APP + " Setting poll archive application"); - recorderApplication = a; } - private BigBlueButtonSession getBbbSession() { - return (BigBlueButtonSession) Red5.getConnectionLocal().getAttribute(Constants.SESSION); - } } diff --git a/bigbluebutton-apps/src/main/java/org/bigbluebutton/conference/service/presentation/PresentationHandler.java b/bigbluebutton-apps/src/main/java/org/bigbluebutton/conference/service/presentation/PresentationHandler.java index c34d003b2902d2d96679ec6fdede7817c571d466..c12c8623f78cafaf966e6023390b0e47c28c4c09 100755 --- a/bigbluebutton-apps/src/main/java/org/bigbluebutton/conference/service/presentation/PresentationHandler.java +++ b/bigbluebutton-apps/src/main/java/org/bigbluebutton/conference/service/presentation/PresentationHandler.java @@ -29,8 +29,6 @@ import org.red5.server.api.scope.IScope; import org.red5.server.api.so.ISharedObject; import org.red5.server.adapter.ApplicationAdapter; import org.red5.server.api.Red5; -import org.bigbluebutton.conference.BigBlueButtonSession; -import org.bigbluebutton.conference.Constants; import org.bigbluebutton.conference.service.recorder.RecorderApplication; import org.bigbluebutton.conference.service.recorder.presentation.PresentationEventRecorder; diff --git a/bigbluebutton-apps/src/main/java/org/bigbluebutton/conference/service/voice/VoiceHandler.java b/bigbluebutton-apps/src/main/java/org/bigbluebutton/conference/service/voice/VoiceHandler.java index 5a09b00648ec6ef7c57841048c360fafeb1fe975..5b4ae6acc399fe3af9c55f055fcf5c5992f7f5ac 100755 --- a/bigbluebutton-apps/src/main/java/org/bigbluebutton/conference/service/voice/VoiceHandler.java +++ b/bigbluebutton-apps/src/main/java/org/bigbluebutton/conference/service/voice/VoiceHandler.java @@ -38,28 +38,6 @@ public class VoiceHandler extends ApplicationAdapter implements IApplication{ private ClientNotifier clientManager; private ConferenceService conferenceService; - @Override - public boolean appConnect(IConnection conn, Object[] params) { - log.debug(APP + ":appConnect"); - return true; - } - - @Override - public void appDisconnect(IConnection conn) { - log.debug(APP + ":appDisconnect"); - } - - @Override - public boolean appJoin(IClient client, IScope scope) { - log.debug(APP + ":appJoin " + scope.getName()); - return true; - } - - @Override - public void appLeave(IClient client, IScope scope) { - log.debug(APP + ":appLeave " + scope.getName()); - - } @Override public boolean appStart(IScope scope) { @@ -77,51 +55,21 @@ public class VoiceHandler extends ApplicationAdapter implements IApplication{ public boolean roomConnect(IConnection connection, Object[] params) { log.debug(APP + ":roomConnect"); log.debug("In live mode"); - - IScope scope = Red5.getConnectionLocal().getScope(); - - if (!hasSharedObject(scope, VOICE_SO)) { - if (createSharedObject(scope, VOICE_SO, false)) { - ISharedObject so = getSharedObject(connection.getScope(), VOICE_SO); + + ISharedObject so = getSharedObject(connection.getScope(), VOICE_SO); - String voiceBridge = getBbbSession().getVoiceBridge(); - String meetingid = getBbbSession().getConference(); - Boolean record = getBbbSession().getRecord(); + String voiceBridge = getBbbSession().getVoiceBridge(); + String meetingid = getBbbSession().getConference(); + Boolean record = getBbbSession().getRecord(); - log.debug("Setting up voiceBridge " + voiceBridge); - clientManager.addSharedObject(connection.getScope().getName(), voiceBridge, so); - conferenceService.createConference(voiceBridge, meetingid, record); - } - } - - - return true; - } + log.debug("Setting up voiceBridge " + voiceBridge); + clientManager.addSharedObject(connection.getScope().getName(), voiceBridge, so); + conferenceService.createConference(voiceBridge, meetingid, record); - @Override - public void roomDisconnect(IConnection connection) { - log.debug(APP + ":roomDisconnect"); - } - - @Override - public boolean roomJoin(IClient client, IScope scope) { - log.debug(APP + ":roomJoin " + scope.getName() + " - " + scope.getParent().getName()); return true; } - @Override - public void roomLeave(IClient client, IScope scope) { - log.debug(APP + ":roomLeave " + scope.getName()); - } - - @Override - public boolean roomStart(IScope scope) { - log.debug(APP + " - roomStart " + scope.getName()); - - log.error("Failed to start room " + scope.getName()); - return true; - } @Override public void roomStop(IScope scope) {