public void setApplicationListeners(Set<IApplication> listeners) { int count = 0; Iterator<IApplication> iter = listeners.iterator(); while (iter.hasNext()) { super.addListener((IApplication) iter.next()); count++; } }
@Override public void streamBroadcastClose(IBroadcastStream stream) { String clientId = Red5.getConnectionLocal().getClient().getId(); String userid = getUserId(); String username = getUsername(); log.debug( "{} has stopped publishing stream [{}]", username + "[uid=" + userid + "][clientid=" + clientId + "]", stream.getPublishedName()); IConnection conn = Red5.getConnectionLocal(); String peerId = (String) conn.getAttribute("VOICE_CONF_PEER"); if (peerId != null) { super.streamPublishStart(stream); sipPeerManager.stopTalkStream(peerId, clientId, stream, conn.getScope()); super.streamBroadcastClose(stream); } }
@Override public void roomStop(IScope room) { log.debug("Stopping room [" + room.getName() + "]."); super.roomStop(room); assert participantsApplication != null; participantsApplication.destroyRoom(room.getName()); BigBlueButtonSession bbbSession = getBbbSession(); assert bbbSession != null; /** Need to figure out if the next 2 lines should be removed. (ralam nov 25, 2010). */ assert recorderApplication != null; recorderApplication.destroyRecordSession(bbbSession.getSessionName()); log.debug("Stopped room [" + room.getName() + "]."); }
@Override public void roomDisconnect(IConnection conn) { String remoteHost = Red5.getConnectionLocal().getRemoteAddress(); int remotePort = Red5.getConnectionLocal().getRemotePort(); String clientId = Red5.getConnectionLocal().getClient().getId(); log.info( "[clientid=" + clientId + "] disconnnected from " + remoteHost + ":" + remotePort + "."); BigBlueButtonSession bbbSession = (BigBlueButtonSession) Red5.getConnectionLocal().getAttribute(Constants.SESSION); log.info( "User [" + bbbSession.getUsername() + "] disconnected from room [" + bbbSession.getRoom() + "]"); super.roomDisconnect(conn); }
@Override public void roomDisconnect(IConnection conn) { String remoteHost = Red5.getConnectionLocal().getRemoteAddress(); int remotePort = Red5.getConnectionLocal().getRemotePort(); String clientId = Red5.getConnectionLocal().getClient().getId(); BigBlueButtonSession bbbSession = (BigBlueButtonSession) Red5.getConnectionLocal().getAttribute(Constants.SESSION); String meetingId = bbbSession.getRoom(); String userId = bbbSession.getInternalUserID(); String connType = getConnectionType(Red5.getConnectionLocal().getType()); String userFullname = bbbSession.getUsername(); String connId = Red5.getConnectionLocal().getSessionId(); String sessionId = CONN + userId; Map<String, Object> logData = new HashMap<String, Object>(); logData.put("meetingId", meetingId); logData.put("connType", connType); logData.put("connId", connId); logData.put("conn", remoteHost + ":" + remotePort); logData.put("sessionId", sessionId); logData.put("userId", userId); logData.put("username", userFullname); logData.put("event", "user_leaving_bbb_apps"); logData.put("description", "User leaving BBB Apps."); Gson gson = new Gson(); String logStr = gson.toJson(logData); boolean removeUser = userConnections.userDisconnected(userId, connId); if (removeUser) { log.info("User leaving bbb-apps: data={}", logStr); red5InGW.userLeft(bbbSession.getRoom(), getBbbSession().getInternalUserID(), sessionId); } else { log.info("User not leaving bbb-apps but just disconnected: data={}", logStr); } super.roomDisconnect(conn); }
@Override public void roomStop(IScope room) { super.roomStop(room); }
@Override public void appStop(IScope app) { super.appStop(app); }
@Override public boolean appStart(IScope app) { super.appStart(app); connInvokerService.setAppScope(app); return true; }
@Override public void roomLeave(IClient client, IScope scope) { super.roomLeave(client, scope); }
@Override public void appLeave(IClient client, IScope scope) { super.appLeave(client, scope); }
@Override public void appDisconnect(IConnection conn) { super.appDisconnect(conn); }
@Override public boolean roomConnect(IConnection connection, Object[] params) { String remoteHost = Red5.getConnectionLocal().getRemoteAddress(); int remotePort = Red5.getConnectionLocal().getRemotePort(); String clientId = Red5.getConnectionLocal().getClient().getId(); log.info("[clientid=" + clientId + "] connected from " + remoteHost + ":" + remotePort + "."); String username = ((String) params[0]).toString(); String role = ((String) params[1]).toString(); String conference = ((String) params[2]).toString(); /* * Convert the id to Long because it gets converted to ascii decimal * equivalent (i.e. zero (0) becomes 48) if we don't. */ long userid = Long.parseLong(Red5.getConnectionLocal().getClient().getId()); String sessionName = connection.getScope().getName(); String voiceBridge = ((String) params[4]).toString(); String room = sessionName; assert recorderApplication != null; boolean record = (Boolean) params[5]; log.debug("record value - [" + record + "]"); String externUserID = ((String) params[6]).toString(); if (record == true) { recorderApplication.createRecordSession(sessionName); } BigBlueButtonSession bbbSession = new BigBlueButtonSession( sessionName, userid, username, role, conference, room, voiceBridge, record, externUserID); connection.setAttribute(Constants.SESSION, bbbSession); String debugInfo = "userid=" + userid + ",username="******",role=" + role + ",conference=" + conference + "," + "session=" + sessionName + ",voiceConf=" + voiceBridge + ",room=" + room + ",externsUserid=" + externUserID; log.debug("User [{}] connected to room [{}]", debugInfo, room); participantsApplication.createRoom(room); super.roomConnect(connection, params); return true; }
@Override public void appStop(IScope app) { log.debug("Stopping BigBlueButton version " + version); super.appStop(app); }