Author: sebawagner
Date: Sun Feb  5 17:03:48 2012
New Revision: 1240767

URL: http://svn.apache.org/viewvc?rev=1240767&view=rev
Log:
OPENMEETINGS-47 fix ScopeApplicationAdapter / sync and message broadcasting 
mechanism to not send messages to SWF10 client Partly fixed for 
streamPublishStart and setRoomValues, fixes AV settings to forward to SWF10 
client

Removed:
    incubator/openmeetings/trunk/singlewebapp/WebContent/openmeetings/Red5.bat
    incubator/openmeetings/trunk/singlewebapp/WebContent/openmeetings/base
    
incubator/openmeetings/trunk/singlewebapp/WebContent/openmeetings/license.txt
    
incubator/openmeetings/trunk/singlewebapp/WebContent/openmeetings/openmeetings_licence.txt
    
incubator/openmeetings/trunk/singlewebapp/WebContent/openmeetings/subscribe.lzx.lzr=swf8.swf
Modified:
    
incubator/openmeetings/trunk/singlewebapp/WebContent/openmeetings/swf10/video/editRecordStreamSWF10.lzx
    
incubator/openmeetings/trunk/singlewebapp/WebContent/openmeetings/swf10/video/videoObjectPlayBroadcast.lzx
    
incubator/openmeetings/trunk/singlewebapp/WebContent/src/modules/conference/participants/participants.lzx
    
incubator/openmeetings/trunk/singlewebapp/src/app/org/openmeetings/app/data/user/Usermanagement.java
    
incubator/openmeetings/trunk/singlewebapp/src/app/org/openmeetings/app/persistence/beans/recording/RoomClient.java
    
incubator/openmeetings/trunk/singlewebapp/src/app/org/openmeetings/app/remote/UserService.java
    
incubator/openmeetings/trunk/singlewebapp/src/app/org/openmeetings/app/remote/WhiteBoardService.java
    
incubator/openmeetings/trunk/singlewebapp/src/app/org/openmeetings/app/remote/red5/ClientListManager.java
    
incubator/openmeetings/trunk/singlewebapp/src/app/org/openmeetings/app/remote/red5/ScopeApplicationAdapter.java
    
incubator/openmeetings/trunk/singlewebapp/src/app/org/openmeetings/app/rtp/RTPStreamReceiver.java
    
incubator/openmeetings/trunk/singlewebapp/src/app/org/openmeetings/app/rtp/RTPStreamingHandler.java
    
incubator/openmeetings/trunk/singlewebapp/src/app/org/openmeetings/servlet/outputhandler/RTPMethodServlet.java
    
incubator/openmeetings/trunk/singlewebapp/src/app/org/openmeetings/servlet/outputhandler/ScreenServlet.java

Modified: 
incubator/openmeetings/trunk/singlewebapp/WebContent/openmeetings/swf10/video/editRecordStreamSWF10.lzx
URL: 
http://svn.apache.org/viewvc/incubator/openmeetings/trunk/singlewebapp/WebContent/openmeetings/swf10/video/editRecordStreamSWF10.lzx?rev=1240767&r1=1240766&r2=1240767&view=diff
==============================================================================
--- 
incubator/openmeetings/trunk/singlewebapp/WebContent/openmeetings/swf10/video/editRecordStreamSWF10.lzx
 (original)
+++ 
incubator/openmeetings/trunk/singlewebapp/WebContent/openmeetings/swf10/video/editRecordStreamSWF10.lzx
 Sun Feb  5 17:03:48 2012
@@ -103,13 +103,14 @@
         <handler name="ondata" args="value">
             <![CDATA[
                 if ($debug) 
Debug.write("getBroadCastId",value,canvas.publicSID);
-
                 parent.myvideocontainer = 
canvas._videoComponent.createVideoObject(canvas.publicSID, true, -1, value);
 
                 if ($debug) Debug.write("parent.setUserAVSettings -1- 
",parent.chosenSetting);
                 if ($debug) Debug.write("parent.setUserAVSettings -2- 
",parent.remoteMessage);
                 if ($debug) Debug.write("parent.setUserAVSettings -3- 
",parent.cam_default_width);
                 if ($debug) Debug.write("parent.setUserAVSettings -4- 
",parent.cam_default_height);
+                if ($debug) Debug.write("parent.setUserAVSettings -5- 
",canvas.currentRoomObject.rooms_id);
+                if ($debug) Debug.write("parent.setUserAVSettings -6- 
",canvas.publicSID);
                 
                 parent.setUserAVSettings.doCall();
             ]]>
@@ -122,12 +123,13 @@
         <netparam><method name="getValue">return 
parent.parent.remoteMessage;</method></netparam>
         <netparam><method name="getValue">return 
parent.parent.cam_default_width;</method></netparam>
         <netparam><method name="getValue">return 
parent.parent.cam_default_height;</method></netparam>
+        <netparam><method name="getValue">return 
parent.parent.cam_default_height;</method></netparam>
+        <netparam><method name="getValue">return 
canvas.publicSID;</method></netparam>
         <handler name="ondata" args="value">
             <![CDATA[
                 if ($debug) Debug.write("setUserAVSettings",value);
                 parent.currentClient = value;
                 parent.doninitalize();
-                //canvas.videoComp_lc.send(canvas.videoComp_lc_callback_name, 
'clb_setUserAVSettings', value);
             ]]>
         </handler>   
     </netRemoteCallHib>  

Modified: 
incubator/openmeetings/trunk/singlewebapp/WebContent/openmeetings/swf10/video/videoObjectPlayBroadcast.lzx
URL: 
http://svn.apache.org/viewvc/incubator/openmeetings/trunk/singlewebapp/WebContent/openmeetings/swf10/video/videoObjectPlayBroadcast.lzx?rev=1240767&r1=1240766&r2=1240767&view=diff
==============================================================================
--- 
incubator/openmeetings/trunk/singlewebapp/WebContent/openmeetings/swf10/video/videoObjectPlayBroadcast.lzx
 (original)
+++ 
incubator/openmeetings/trunk/singlewebapp/WebContent/openmeetings/swf10/video/videoObjectPlayBroadcast.lzx
 Sun Feb  5 17:03:48 2012
@@ -19,7 +19,7 @@
   
   <handler name="oninit">
      <![CDATA[
-        if ($debug) Debug.write("Init videoObjectPlayBroadcast ",this.name);
+        if ($debug) Debug.write("Init videoObjectPlayBroadcast 
",this.isremote,this.clientVars);
         //Display widget defined in mother class
         this._loudness.bringToFront();
         this._resizeview.bringToFront();

Modified: 
incubator/openmeetings/trunk/singlewebapp/WebContent/src/modules/conference/participants/participants.lzx
URL: 
http://svn.apache.org/viewvc/incubator/openmeetings/trunk/singlewebapp/WebContent/src/modules/conference/participants/participants.lzx?rev=1240767&r1=1240766&r2=1240767&view=diff
==============================================================================
--- 
incubator/openmeetings/trunk/singlewebapp/WebContent/src/modules/conference/participants/participants.lzx
 (original)
+++ 
incubator/openmeetings/trunk/singlewebapp/WebContent/src/modules/conference/participants/participants.lzx
 Sun Feb  5 17:03:48 2012
@@ -69,6 +69,10 @@
         this.getRoomModeratorsByRoomId.doCall();
     </method>
     
+    <!---
+        Returns a list of all moderators of the current room and parses 
+        if the current user should receive the supermoderator flag or not
+     -->
     <netRemoteCallHib name="getRoomModeratorsByRoomId" 
funcname="conferenceservice.getRoomModeratorsByRoomId" 
                       remotecontext="$once{ canvas.thishib }" >  
         <netparam><method name="getValue">return 
canvas.sessionId;</method></netparam>    
@@ -117,6 +121,9 @@
         </handler>
     </netRemoteCallHib>     
 
+    <!---
+        Returns a list of all users currently in the conference room
+     -->
     <netRemoteCallHib name="setRoomValues" funcname="setRoomValues" 
remotecontext="$once{ canvas.thishib }" >   
         <attribute name="applyDefaultModeration" value="false" type="boolean" 
/>
         <attribute name="organisation_id" value="0" type="number" />
@@ -161,81 +168,14 @@
         </handler>  
     </netRemoteCallHib>
 
-    <!-- invoked if another client logs into the room 
-    after choosing devices -->     
+    <!---
+        invoked if another client logs into the room 
+        after choosing devices
+     -->     
     <method name="setAVSettingsToClient" args="rcl">
-        if ($debug) Debug.write("setAVSettingsToClient ",rcl.publicSID,rcl);
-        var obj = this.getVideoObjectByPublicSID(rcl.publicSID);
-        if ($debug) Debug.write("setAVSettingsToClient: ",obj,rcl.avsettings);
-        if (obj == null) {
-            if ($debug) Debug.warn("Could Not Find Instance 
setAVSettingsToClient ",rcl.publicSID);
-            return;
-        }
-        if (rcl.avsettings=="n"){
-            obj.setAttribute("visibility","hidden");
-            obj.setVideouserProfilePic(rcl);
-        } else if (rcl.avsettings=="a"){
-            obj.setVideouserProfilePic(rcl);
-            obj.setAttribute("visibility","hidden");
-        } else {
-            obj.deleteVideoConfProfilePic();
-            obj.setAttribute("visibility","visible");
-        }
-        obj.clientVars = rcl;
-        obj.updateAVSettingsSymbol(rcl);
+        this._videoviewcontent.setAVSettingsToClient(rcl);
     </method> 
     
-
-    <!--- get a baseVideoObject by a Users publicSID
-        @param string publicSID publicSID
-     -->
-    <method name="getVideoObjectByPublicSID" args="publicSID">
-        <![CDATA[
-               if(canvas.currentRoomObj.hideWhiteboard){
-                       var videoContainer = 
canvas.currentBaseConferenceRoom._videoviewcontent_hideWhiteboard._inn;
-                   
-                   for (var i=0;i<videoContainer.subviews.length;i++){
-                       //if ($debug) Debug.write("getVideoObjectByBroadCastId2 
broadcastId VIEW: ",this._videoviewcontent.subviews[i].broadcastId);
-                       //if ($debug) Debug.write("getVideoObjectByBroadCastId3 
broadcastId SEARCH: ",broadcastId);
-                       //if ($debug) Debug.write("getVideoObjectByBroadCastId4 
obj: ",this._videoviewcontent.subviews[i]);
-                       //if ($debug) Debug.write("getVideoObjectByBroadCastId5 
streamid,user_id: 
",this._videoviewcontent.subviews[i].clientVars.streamid,this._videoviewcontent.subviews[i].clientVars.user_id);
-                       if (videoContainer.subviews[i].publicSID==publicSID){
-                           return videoContainer.subviews[i];
-                       }
-                   }
-                   
-                   if ($debug) Debug.warn(" - getVideoObjectByPublicSID - DID 
NOT FIND THE USER BY ",publicSID);
-                   
-                   return null;
-               }else{
-                   //if ($debug) Debug.write("getVideoObjectByPublicSid 
SEARCH: ",publicSID,parent.parent);
-                   
-                   //for (var 
i=0;i<this._videoviewcontent.subviews.length;i++){
-                   //  if ($debug) Debug.write("getVideoObjectByBroadCastId6 
broadcastId: ",this._videoviewcontent.subviews[i].broadcastId);
-                   //  if ($debug) Debug.write("getVideoObjectByBroadCastId7 
streamid,user_id: 
",this._videoviewcontent.subviews[i].clientVars.streamid,this._videoviewcontent.subviews[i].clientVars.user_id);
-                   //}
-                   var videoContainer = this._videoviewcontent;
-                   if (this.userNewVideoContainer) {
-                       videoContainer = parent.parent._videoviewcontent;
-                   }
-                   
-                   for (var i=0;i<videoContainer.subviews.length;i++){
-                       //if ($debug) Debug.write("getVideoObjectByBroadCastId2 
broadcastId VIEW: ",this._videoviewcontent.subviews[i].broadcastId);
-                       //if ($debug) Debug.write("getVideoObjectByBroadCastId3 
broadcastId SEARCH: ",broadcastId);
-                       //if ($debug) Debug.write("getVideoObjectByBroadCastId4 
obj: ",this._videoviewcontent.subviews[i]);
-                       //if ($debug) Debug.write("getVideoObjectByBroadCastId5 
streamid,user_id: 
",this._videoviewcontent.subviews[i].clientVars.streamid,this._videoviewcontent.subviews[i].clientVars.user_id);
-                       if (videoContainer.subviews[i].publicSID==publicSID){
-                           return videoContainer.subviews[i];
-                       }
-                   }
-                   
-                   if ($debug) Debug.warn(" - getVideoObjectByPublicSID - DID 
NOT FIND THE USER BY ",publicSID);
-                   
-                   return null;
-               }
-        ]]>
-    </method>           
-
     <method name="addItem" 
args="connectedSince,isMod,streamid,username,userroom,formatedDate,position,color,object">
         <![CDATA[
             if ($debug) Debug.write("initializeStreams addItem: 
",connectedSince,object);

Modified: 
incubator/openmeetings/trunk/singlewebapp/src/app/org/openmeetings/app/data/user/Usermanagement.java
URL: 
http://svn.apache.org/viewvc/incubator/openmeetings/trunk/singlewebapp/src/app/org/openmeetings/app/data/user/Usermanagement.java?rev=1240767&r1=1240766&r2=1240767&view=diff
==============================================================================
--- 
incubator/openmeetings/trunk/singlewebapp/src/app/org/openmeetings/app/data/user/Usermanagement.java
 (original)
+++ 
incubator/openmeetings/trunk/singlewebapp/src/app/org/openmeetings/app/data/user/Usermanagement.java
 Sun Feb  5 17:03:48 2012
@@ -1675,7 +1675,7 @@ public class Usermanagement {
                        if (authLevelManagement.checkAdminLevel(user_level)) {
 
                                RoomClient rcl = clientListManager
-                                               
.getClientByPublicSID(publicSID);
+                                               
.getClientByPublicSID(publicSID, false);
 
                                if (rcl == null) {
                                        return true;

Modified: 
incubator/openmeetings/trunk/singlewebapp/src/app/org/openmeetings/app/persistence/beans/recording/RoomClient.java
URL: 
http://svn.apache.org/viewvc/incubator/openmeetings/trunk/singlewebapp/src/app/org/openmeetings/app/persistence/beans/recording/RoomClient.java?rev=1240767&r1=1240766&r2=1240767&view=diff
==============================================================================
--- 
incubator/openmeetings/trunk/singlewebapp/src/app/org/openmeetings/app/persistence/beans/recording/RoomClient.java
 (original)
+++ 
incubator/openmeetings/trunk/singlewebapp/src/app/org/openmeetings/app/persistence/beans/recording/RoomClient.java
 Sun Feb  5 17:03:48 2012
@@ -66,10 +66,13 @@ public class RoomClient implements Seria
        private int vX = 0;
        @Column(name="vY")
        private int vY = 0;
+       /**
+        * StreamPublishName is used in the screen sharing client to publish 
the stream
+        */
        @Column(name="streamPublishName")
        private String streamPublishName = "";
        
-       /*
+       /**
         * an unique PUBLIC id,
         * this ID is needed as people can reconnect and will get a new 
         * streamid, but we need to know if this is still the same user
@@ -78,6 +81,9 @@ public class RoomClient implements Seria
         * the private  Session ID is not written to the RoomClient-Class
         * as every instance of the RoomClient is send to all connected users
         * 
+        * publicSID can be empty if a audio/video user is connected but 
+        * didn't choose any device settings or the connection really just
+        * has been initialized
         */
        @Column(name="public_sid")
        private String publicSID = "";
@@ -106,6 +112,17 @@ public class RoomClient implements Seria
        private String formatedDate;
        @Column(name="isScreenClient")
        private Boolean isScreenClient = false;
+       /**
+        * If true this client is only used to stream audio/video events, 
+        * he should not receive any sync events / push messages 
+        * 
+        * null means not initialized yet
+        * true the user is an audio/video connection
+        * false the user is a regular user with full session object
+        * 
+        */
+       @Column(name="isAVClient")
+       private Boolean isAVClient = null;
        
        /*
         * the color of the user, only needed in 4x4 Conference, in these rooms 
each user has its own
@@ -649,6 +666,14 @@ public class RoomClient implements Seria
        public void setAllowRecording(Boolean allowRecording) {
                this.allowRecording = allowRecording;
        }
+
+       public Boolean getIsAVClient() {
+               return isAVClient;
+       }
+
+       public void setIsAVClient(Boolean isAVClient) {
+               this.isAVClient = isAVClient;
+       }
        
        
 }

Modified: 
incubator/openmeetings/trunk/singlewebapp/src/app/org/openmeetings/app/remote/UserService.java
URL: 
http://svn.apache.org/viewvc/incubator/openmeetings/trunk/singlewebapp/src/app/org/openmeetings/app/remote/UserService.java?rev=1240767&r1=1240766&r2=1240767&view=diff
==============================================================================
--- 
incubator/openmeetings/trunk/singlewebapp/src/app/org/openmeetings/app/remote/UserService.java
 (original)
+++ 
incubator/openmeetings/trunk/singlewebapp/src/app/org/openmeetings/app/remote/UserService.java
 Sun Feb  5 17:03:48 2012
@@ -1548,7 +1548,7 @@ public class UserService {
                        if (authLevelManagement.checkUserLevel(user_level)) {
 
                                RoomClient rcl = this.clientListManager
-                                               
.getClientByPublicSID(publicSID);
+                                               
.getClientByPublicSID(publicSID, false);
 
                                if (rcl == null) {
                                        return true;

Modified: 
incubator/openmeetings/trunk/singlewebapp/src/app/org/openmeetings/app/remote/WhiteBoardService.java
URL: 
http://svn.apache.org/viewvc/incubator/openmeetings/trunk/singlewebapp/src/app/org/openmeetings/app/remote/WhiteBoardService.java?rev=1240767&r1=1240766&r2=1240767&view=diff
==============================================================================
--- 
incubator/openmeetings/trunk/singlewebapp/src/app/org/openmeetings/app/remote/WhiteBoardService.java
 (original)
+++ 
incubator/openmeetings/trunk/singlewebapp/src/app/org/openmeetings/app/remote/WhiteBoardService.java
 Sun Feb  5 17:03:48 2012
@@ -229,7 +229,7 @@ public class WhiteBoardService implement
 
                                if (currentClient.getIsMod()) {
                                        RoomClient rcl = this.clientListManager
-                                                       
.getClientByPublicSID(publicSID);
+                                                       
.getClientByPublicSID(publicSID, false);
 
                                        if (rcl != null) {
                                                rcl.setCanDraw(canDraw);
@@ -271,7 +271,7 @@ public class WhiteBoardService implement
 
                                if (currentClient.getIsMod()) {
                                        RoomClient rcl = this.clientListManager
-                                                       
.getClientByPublicSID(publicSID);
+                                                       
.getClientByPublicSID(publicSID, false);
 
                                        if (rcl != null) {
                                                rcl.setCanShare(canShare);
@@ -313,7 +313,7 @@ public class WhiteBoardService implement
 
                                if (currentClient.getIsMod()) {
                                        RoomClient rcl = this.clientListManager
-                                                       
.getClientByPublicSID(publicSID);
+                                                       
.getClientByPublicSID(publicSID, false);
 
                                        if (rcl != null) {
                                                rcl.setCanRemote(canRemote);
@@ -354,7 +354,7 @@ public class WhiteBoardService implement
                        if (authLevelManagement.checkUserLevel(user_level)) {
                                if (currentClient.getIsMod()) {
                                        RoomClient rcl = this.clientListManager
-                                                       
.getClientByPublicSID(publicSID);
+                                                       
.getClientByPublicSID(publicSID, false);
 
                                        if (rcl != null) {
                                                
rcl.setCanGiveAudio(canGiveAudio);

Modified: 
incubator/openmeetings/trunk/singlewebapp/src/app/org/openmeetings/app/remote/red5/ClientListManager.java
URL: 
http://svn.apache.org/viewvc/incubator/openmeetings/trunk/singlewebapp/src/app/org/openmeetings/app/remote/red5/ClientListManager.java?rev=1240767&r1=1240766&r2=1240767&view=diff
==============================================================================
--- 
incubator/openmeetings/trunk/singlewebapp/src/app/org/openmeetings/app/remote/red5/ClientListManager.java
 (original)
+++ 
incubator/openmeetings/trunk/singlewebapp/src/app/org/openmeetings/app/remote/red5/ClientListManager.java
 Sun Feb  5 17:03:48 2012
@@ -40,6 +40,38 @@ public class ClientListManager {
 
        @Autowired
        private ManageCryptStyle manageCryptStyle;
+       
+       /**
+        * Get current clients and extends the room client with its potential 
+        * audio/video client and settings
+        * 
+        * @param room_id
+        * @return
+        */
+       public HashMap<String, RoomClient> getRoomClients(Long room_id) {
+               try {
+
+                       HashMap<String, RoomClient> roomClientList = new 
HashMap<String, RoomClient>();
+                       HashMap<String, RoomClient> clientListRoom = 
this.getClientListByRoom(room_id);
+                       for (Iterator<String> iter = 
clientListRoom.keySet().iterator(); iter
+                                       .hasNext();) {
+                               String key = iter.next();
+                               RoomClient rcl = this.getClientByStreamId(key);
+                               
+                               if (rcl.getIsAVClient() == null || 
rcl.getIsAVClient()) {
+                                       continue;
+                               }
+                               
+                               // Add user to List
+                               roomClientList.put(key, rcl);
+                       }
+
+                       return roomClientList;
+               } catch (Exception err) {
+                       log.error("[getRoomClients]", err);
+               }
+               return null;
+       }
 
        public synchronized RoomClient addClientListItem(String streamId,
                        String scopeName, Integer remotePort, String 
remoteAddress,
@@ -129,14 +161,20 @@ public class ClientListManager {
        }
 
 
-       public synchronized RoomClient getClientByPublicSID(String publicSID) {
+       public synchronized RoomClient getClientByPublicSID(String publicSID, 
Boolean isAVClient) {
                try {
                        for (Iterator<String> iter = 
clientList.keySet().iterator(); iter
                                        .hasNext();) {
                                RoomClient rcl = clientList.get(iter.next());
-                               if (rcl.getPublicSID().equals(publicSID)) {
-                                       return rcl;
+                               
+                               if (!rcl.getPublicSID().equals(publicSID)) {
+                                       continue;
                                }
+                               if (rcl.getIsAVClient() == null || 
rcl.getIsAVClient() != isAVClient) {
+                                       continue;
+                               }
+                               
+                               return rcl;
                        }
                } catch (Exception err) {
                        log.error("[getClientByPublicSID]", err);
@@ -158,6 +196,40 @@ public class ClientListManager {
                }
                return null;
        }
+       
+       /**
+        * Update the session object of the audio/video-connection and 
additionally swap the 
+        * values to the session object of the user that holds the full session 
object
+        * @param streamId
+        * @param rcm
+        * @return
+        */
+       public synchronized Boolean updateAVClientByStreamId(String streamId,
+                       RoomClient rcm) {
+               try {
+                       
+                       //get the corresponding user session object and update 
the settings
+                       RoomClient rclUsual = 
getClientByPublicSID(rcm.getPublicSID(), false);
+                       if (rclUsual != null) {
+                               rclUsual.setBroadCastID(rcm.getBroadCastID());
+                               rclUsual.setAvsettings(rcm.getAvsettings());
+                               rclUsual.setVHeight(rcm.getVHeight());
+                               rclUsual.setVWidth(rcm.getVWidth());
+                               rclUsual.setVX(rcm.getVX());
+                               rclUsual.setVY(rcm.getVY());
+                               if 
(clientList.containsKey(rclUsual.getStreamid())) {
+                                       clientList.put(rclUsual.getStreamid(), 
rclUsual);
+                               } else {
+                                        log.debug("Tried to update a non 
existing Client " + rclUsual.getStreamid());
+                               }
+                       }
+                       
+                       updateClientByStreamId(streamId, rcm);
+               } catch (Exception err) {
+                       log.error("[updateAVClientByStreamId]", err);
+               }
+               return null;
+       }
 
        public synchronized Boolean updateClientByStreamId(String streamId,
                        RoomClient rcm) {
@@ -207,23 +279,33 @@ public class ClientListManager {
                        for (Iterator<String> iter = 
clientList.keySet().iterator(); iter
                                        .hasNext();) {
                                String key = iter.next();
-                               // log.debug("getClientList key: "+key);
                                RoomClient rcl = clientList.get(key);
-                               // same room, same domain
-                               if (room_id != null && 
room_id.equals(rcl.getRoom_id())) {
-                                       if (rcl.getIsScreenClient() != null
-                                                       && 
rcl.getIsScreenClient()) {
-                                               // continue
-                                       } else {
-                                               roomClientList.put(key, rcl);
-                                       }
+                               
+                               // client initialized and same room
+                               if (rcl.getRoom_id() == null || 
!room_id.equals(rcl.getRoom_id())) {
+                                       continue;
                                }
+                               if (rcl.getIsScreenClient() == null ||
+                                               rcl.getIsScreenClient()) {
+                                       continue;
+                               }
+                               if (rcl.getIsAVClient() == null || 
+                                               rcl.getIsAVClient()) {
+                                       continue;
+                               }
+                                       
+                               //Only parse really those users out that are 
really a full session object 
+                               //and no pseudo session object like the 
audio/video or screen sharing connection 
+                               roomClientList.put(key, rcl);
+                                       
                        }
                } catch (Exception err) {
                        log.error("[getClientListByRoom]", err);
                }
                return roomClientList;
        }
+       
+       
 
        // FIXME seems to be copy/pasted with previous one
        public synchronized HashMap<String, RoomClient> getClientListByRoomAll(

Modified: 
incubator/openmeetings/trunk/singlewebapp/src/app/org/openmeetings/app/remote/red5/ScopeApplicationAdapter.java
URL: 
http://svn.apache.org/viewvc/incubator/openmeetings/trunk/singlewebapp/src/app/org/openmeetings/app/remote/red5/ScopeApplicationAdapter.java?rev=1240767&r1=1240766&r2=1240767&view=diff
==============================================================================
--- 
incubator/openmeetings/trunk/singlewebapp/src/app/org/openmeetings/app/remote/red5/ScopeApplicationAdapter.java
 (original)
+++ 
incubator/openmeetings/trunk/singlewebapp/src/app/org/openmeetings/app/remote/red5/ScopeApplicationAdapter.java
 Sun Feb  5 17:03:48 2012
@@ -402,7 +402,7 @@ public class ScopeApplicationAdapter ext
 
                                RoomClient currentScreenUser = 
this.clientListManager
                                                
.getClientByPublicSID(currentClient
-                                                               
.getStreamPublishName());
+                                                               
.getStreamPublishName(), false);
 
                                
currentClient.setFirstname(currentScreenUser.getFirstname());
                                
currentClient.setLastname(currentScreenUser.getLastname());
@@ -685,14 +685,13 @@ public class ScopeApplicationAdapter ext
        @Override
        public synchronized void streamPublishStart(IBroadcastStream stream) {
                try {
-
                        IConnection current = Red5.getConnectionLocal();
                        String streamid = current.getClient().getId();
                        RoomClient currentClient = this.clientListManager
                                        .getClientByStreamId(streamid);
 
                        // Notify all the clients that the stream had been 
started
-                       log.debug("start streamPublishStart broadcast start: "
+                       System.out.println("start streamPublishStart broadcast 
start: "
                                        + stream.getPublishedName() + "CONN " + 
current);
 
                        // In case its a screen sharing we start a new Video 
for that
@@ -702,71 +701,66 @@ public class ScopeApplicationAdapter ext
 
                                
this.clientListManager.updateClientByStreamId(current
                                                .getClient().getId(), 
currentClient);
-
                        }
+                       //If its an audio/video client then send the session 
object with the full 
+                       //data to everybody
+                       else if (currentClient.getIsAVClient() != null && 
currentClient.getIsAVClient()) {
+                               currentClient = 
this.clientListManager.getClientByPublicSID(
+                                                                               
        currentClient.getPublicSID(), false);
+                       }
+                       
+                       System.out.println("newStream SEND");
 
                        // Notify all users of the same Scope
-                       // We need to iterate through the streams to cathc if 
anybody is
-                       // recording
+                       // We need to iterate through the streams to catch if 
anybody is recording
                        Collection<Set<IConnection>> conCollection = 
current.getScope()
                                        .getConnections();
                        for (Set<IConnection> conset : conCollection) {
                                for (IConnection conn : conset) {
                                        if (conn != null) {
                                                if (conn instanceof 
IServiceCapableConnection) {
-                                                       if 
(conn.equals(current)) {
-                                                               RoomClient rcl 
= this.clientListManager
-                                                                               
.getClientByStreamId(conn.getClient()
-                                                                               
                .getId());
-                                                               if (rcl == 
null) {
-                                                                       // 
continue;
-                                                               } else if 
(rcl.getIsRecording()) {
-                                                                       // 
StreamService.addRecordingByStreamId(current,
-                                                                       // 
streamid, currentClient,
-                                                                       // 
rcl.getFlvRecordingId());
-
-                                                                       
this.flvRecorderService
-                                                                               
        .addRecordingByStreamId(current,
-                                                                               
                        streamid, currentClient,
-                                                                               
                        rcl.getFlvRecordingId());
-
-                                                               }
+                                                       
+                                                       RoomClient rcl = 
this.clientListManager
+                                                                       
.getClientByStreamId(conn.getClient()
+                                                                               
        .getId());
+                                                       
+                                                       if (rcl == null) {
+                                                               
System.out.println("RCL IS NULL newStream SEND");
                                                                continue;
-                                                       } else {
-                                                               RoomClient rcl 
= this.clientListManager
-                                                                               
.getClientByStreamId(conn.getClient()
-                                                                               
                .getId());
-                                                               // 
log.debug("is this users still alive? :"+rcl);
-                                                               // Check if the 
Client is in the same room and
-                                                               // same domain
-                                                               if (rcl == 
null) {
-                                                                       // 
continue;
-                                                               } else {
-                                                                       
IServiceCapableConnection iStream = (IServiceCapableConnection) conn;
-                                                                       // 
log.info("IServiceCapableConnection ID "
-                                                                       // + 
iStream.getClient().getId());
-                                                                       if 
(rcl.getIsScreenClient() != null
-                                                                               
        && rcl.getIsScreenClient()) {
-                                                                               
// continue;
-                                                                       } else {
-                                                                               
iStream.invoke("newStream",
-                                                                               
                new Object[] { currentClient },
-                                                                               
                this);
-                                                                       }
-
-                                                                       if 
(rcl.getIsRecording()) {
-                                                                               
// StreamService.addRecordingByStreamId(current,
-                                                                               
// streamid, currentClient,
-                                                                               
// rcl.getFlvRecordingId());
-                                                                               
this.flvRecorderService
-                                                                               
                .addRecordingByStreamId(
-                                                                               
                                current, streamid,
-                                                                               
                                currentClient,
-                                                                               
                                rcl.getFlvRecordingId());
+                                                       }
+                                                       if (rcl.getPublicSID() 
== "") {
+                                                               
System.out.println("publicSID IS NULL newStream SEND");
+                                                               continue;
+                                                       }
+                                                       if (rcl.getIsAVClient() 
== null || rcl.getIsAVClient()) {
+                                                               
System.out.println("RCL getIsAVClient newStream SEND");
+                                                               continue;
+                                                       }
+                                                       if 
(rcl.getIsScreenClient() == null || rcl.getIsScreenClient()) {
+                                                               
System.out.println("RCL getIsScreenClient newStream SEND");
+                                                               continue;
+                                                       }
 
-                                                                       }
-                                                               }
+                                                       if 
(rcl.getIsRecording()) {
+                                                               
System.out.println("RCL getIsRecording newStream SEND");
+                                                               
this.flvRecorderService
+                                                                               
.addRecordingByStreamId(current,
+                                                                               
                streamid, currentClient,
+                                                                               
                rcl.getFlvRecordingId());
+                                                       }
+                                                       
+                                                       if 
(rcl.getPublicSID().equals(currentClient.getPublicSID())) {
+                                                               
System.out.println("RCL publicSID is equal newStream SEND");
+                                                               continue;
                                                        }
+                                                       
+                                                       System.out.println("RCL 
SEND is equal newStream SEND "+rcl.getPublicSID()+" || "+rcl.getUserport());
+                                                               
+                                                       
IServiceCapableConnection iStream = (IServiceCapableConnection) conn;
+                                                       
iStream.invoke("newStream",
+                                                                       new 
Object[] { currentClient },
+                                                                       this);
+
                                                }
                                        }
                                }
@@ -924,7 +918,7 @@ public class ScopeApplicationAdapter ext
                        // String streamid = current.getClient().getId();
 
                        RoomClient currentClient = this.clientListManager
-                                       .getClientByPublicSID(publicSID);
+                                       .getClientByPublicSID(publicSID, false);
 
                        if (currentClient == null) {
                                return -1L;
@@ -1017,7 +1011,7 @@ public class ScopeApplicationAdapter ext
                        // String streamid = current.getClient().getId();
 
                        RoomClient currentClient = this.clientListManager
-                                       .getClientByPublicSID(publicSID);
+                                       .getClientByPublicSID(publicSID, false);
 
                        if (currentClient == null) {
                                return -1L;
@@ -1076,7 +1070,7 @@ public class ScopeApplicationAdapter ext
                        // String streamid = current.getClient().getId();
 
             RoomClient currentClient = this.clientListManager
-                                       .getClientByPublicSID(publicSID);
+                                       .getClientByPublicSID(publicSID, false);
 
                        if (currentClient == null) {
                                return -1L;
@@ -1132,7 +1126,7 @@ public class ScopeApplicationAdapter ext
                        // String streamid = current.getClient().getId();
 
                        RoomClient currentClient = this.clientListManager
-                                       .getClientByPublicSID(publicSID);
+                                       .getClientByPublicSID(publicSID, false);
 
                        if (currentClient == null) {
                                return -1L;
@@ -1187,7 +1181,7 @@ public class ScopeApplicationAdapter ext
                        log.debug("*..*switchMicMuted publicSID: " + publicSID);
 
                        RoomClient currentClient = this.clientListManager
-                                       .getClientByPublicSID(publicSID);
+                                       .getClientByPublicSID(publicSID, false);
                        if (currentClient == null) {
                                return -1L;
                        }
@@ -1209,7 +1203,7 @@ public class ScopeApplicationAdapter ext
 
     public synchronized Boolean getMicMutedByPublicSID(String publicSID) {
         try {
-                       RoomClient currentClient = 
this.clientListManager.getClientByPublicSID(publicSID);
+                       RoomClient currentClient = 
this.clientListManager.getClientByPublicSID(publicSID, false);
                        if (currentClient == null) {
                                return true;
                        }
@@ -1240,7 +1234,7 @@ public class ScopeApplicationAdapter ext
                try {
 
                        RoomClient currentClient = this.clientListManager
-                                       .getClientByPublicSID(publicSID);
+                                       .getClientByPublicSID(publicSID, false);
 
                        List<RoomClient> currentModList = this.clientListManager
                                        
.getCurrentModeratorByRoom(currentClient.getRoom_id());
@@ -1299,7 +1293,8 @@ public class ScopeApplicationAdapter ext
         * @return
         */
        public synchronized RoomClient setUserAVSettings(String avsettings,
-                       Object newMessage, Integer vWidth, Integer vHeight) {
+                       Object newMessage, Integer vWidth, Integer vHeight, 
+                       long room_id, String publicSID) {
                try {
 
                        IConnection current = Red5.getConnectionLocal();
@@ -1307,10 +1302,13 @@ public class ScopeApplicationAdapter ext
                        RoomClient currentClient = this.clientListManager
                                        .getClientByStreamId(streamid);
                        currentClient.setAvsettings(avsettings);
+                       currentClient.setRoom_id(room_id);
+                       currentClient.setPublicSID(publicSID);
+                       currentClient.setIsAVClient(true);
                        currentClient.setVWidth(vWidth);
                        currentClient.setVHeight(vHeight);
                        // Long room_id = currentClient.getRoom_id();
-                       this.clientListManager.updateClientByStreamId(streamid,
+                       
this.clientListManager.updateAVClientByStreamId(streamid,
                                        currentClient);
 
                        HashMap<String, Object> hsm = new HashMap<String, 
Object>();
@@ -1437,6 +1435,7 @@ public class ScopeApplicationAdapter ext
                        RoomClient currentClient = this.clientListManager
                                        .getClientByStreamId(streamid);
                        currentClient.setRoom_id(room_id);
+                       currentClient.setIsAVClient(false);
                        currentClient.setRoomEnter(new Date());
                        currentClient.setOrganization_id(organization_id);
 
@@ -1476,7 +1475,7 @@ public class ScopeApplicationAdapter ext
                                                                                
                                        // number
 
                        // Check for Moderation LogicalRoom ENTER
-                       HashMap<String, RoomClient> clientListRoom = this
+                       HashMap<String, RoomClient> clientListRoom = 
this.clientListManager
                                        .getRoomClients(room_id);
 
                        // appointed meeting or moderated Room? => Check Max 
Users first
@@ -1707,34 +1706,6 @@ public class ScopeApplicationAdapter ext
        }
 
        /**
-        * Get current clients
-        * 
-        * @param room_id
-        * @return
-        */
-       private HashMap<String, RoomClient> getRoomClients(Long room_id) {
-               try {
-
-                       HashMap<String, RoomClient> roomClientList = new 
HashMap<String, RoomClient>();
-                       HashMap<String, RoomClient> clientListRoom = 
this.clientListManager
-                                       .getClientListByRoom(room_id);
-                       for (Iterator<String> iter = 
clientListRoom.keySet().iterator(); iter
-                                       .hasNext();) {
-                               String key = iter.next();
-                               RoomClient rcl = this.clientListManager
-                                               .getClientByStreamId(key);
-                               // Add user to List
-                               roomClientList.put(key, rcl);
-                       }
-
-                       return roomClientList;
-               } catch (Exception err) {
-                       log.error("[getRoomClients]", err);
-               }
-               return null;
-       }
-
-       /**
         * This method is invoked when the user has disconnected and reconnects 
to
         * the Gateway with the new scope
         * 
@@ -2469,7 +2440,7 @@ public class ScopeApplicationAdapter ext
 
                        // Get Room Id to send it to the correct Scope
                        RoomClient currentClient = this.clientListManager
-                                       .getClientByPublicSID(publicSID);
+                                       .getClientByPublicSID(publicSID, false);
 
                        if (currentClient == null) {
                                return;
@@ -2564,7 +2535,7 @@ public class ScopeApplicationAdapter ext
 
                        // Get Room Id to send it to the correct Scope
                        RoomClient currentClient = this.clientListManager
-                                       .getClientByPublicSID(publicSID);
+                                       .getClientByPublicSID(publicSID, false);
 
                        if (currentClient == null) {
                                return;
@@ -2783,7 +2754,7 @@ public class ScopeApplicationAdapter ext
 
                        // Get Room Id to send it to the correct Scope
                        RoomClient currentClient = this.clientListManager
-                                       .getClientByPublicSID(publicSID);
+                                       .getClientByPublicSID(publicSID, false);
 
                        if (currentClient == null) {
                                return;
@@ -2860,7 +2831,7 @@ public class ScopeApplicationAdapter ext
 
                        // Get Room Id to send it to the correct Scope
                        RoomClient currentClient = this.clientListManager
-                                       .getClientByPublicSID(publicSID);
+                                       .getClientByPublicSID(publicSID, false);
 
                        if (currentClient == null) {
                                throw new Exception(
@@ -2933,7 +2904,7 @@ public class ScopeApplicationAdapter ext
 
                        // Get Room Id to send it to the correct Scope
                        RoomClient currentClient = this.clientListManager
-                                       .getClientByPublicSID(publicSID);
+                                       .getClientByPublicSID(publicSID, false);
 
                        if (currentClient == null) {
                                currentClient = this.clientListManager

Modified: 
incubator/openmeetings/trunk/singlewebapp/src/app/org/openmeetings/app/rtp/RTPStreamReceiver.java
URL: 
http://svn.apache.org/viewvc/incubator/openmeetings/trunk/singlewebapp/src/app/org/openmeetings/app/rtp/RTPStreamReceiver.java?rev=1240767&r1=1240766&r2=1240767&view=diff
==============================================================================
--- 
incubator/openmeetings/trunk/singlewebapp/src/app/org/openmeetings/app/rtp/RTPStreamReceiver.java
 (original)
+++ 
incubator/openmeetings/trunk/singlewebapp/src/app/org/openmeetings/app/rtp/RTPStreamReceiver.java
 Sun Feb  5 17:03:48 2012
@@ -101,7 +101,7 @@ public class RTPStreamReceiver implement
                
                while(iter.hasNext()){
                        String clientSID = iter.next();
-                       RoomClient client = 
clientListManager.getClientByPublicSID(clientSID);
+                       RoomClient client = 
clientListManager.getClientByPublicSID(clientSID, false);
                        
                        log.debug("Adding Target for room " 
+session.getRoom().getRooms_id() + " : " + client.getUserip() + "/" + 
viewers.get(clientSID));
                        

Modified: 
incubator/openmeetings/trunk/singlewebapp/src/app/org/openmeetings/app/rtp/RTPStreamingHandler.java
URL: 
http://svn.apache.org/viewvc/incubator/openmeetings/trunk/singlewebapp/src/app/org/openmeetings/app/rtp/RTPStreamingHandler.java?rev=1240767&r1=1240766&r2=1240767&view=diff
==============================================================================
--- 
incubator/openmeetings/trunk/singlewebapp/src/app/org/openmeetings/app/rtp/RTPStreamingHandler.java
 (original)
+++ 
incubator/openmeetings/trunk/singlewebapp/src/app/org/openmeetings/app/rtp/RTPStreamingHandler.java
 Sun Feb  5 17:03:48 2012
@@ -143,7 +143,7 @@ public class RTPStreamingHandler {
                // Should be retrieved via Clientlist to receive the "extern" 
IP, seen
                // by red5
                RoomClient rcl = clientListManager.getClientByPublicSID(
-                               publicSID);
+                               publicSID, false);
 
                if (rcl == null)
                        throw new Exception("Could not retrieve RoomClient for 
publicSID");

Modified: 
incubator/openmeetings/trunk/singlewebapp/src/app/org/openmeetings/servlet/outputhandler/RTPMethodServlet.java
URL: 
http://svn.apache.org/viewvc/incubator/openmeetings/trunk/singlewebapp/src/app/org/openmeetings/servlet/outputhandler/RTPMethodServlet.java?rev=1240767&r1=1240766&r2=1240767&view=diff
==============================================================================
--- 
incubator/openmeetings/trunk/singlewebapp/src/app/org/openmeetings/servlet/outputhandler/RTPMethodServlet.java
 (original)
+++ 
incubator/openmeetings/trunk/singlewebapp/src/app/org/openmeetings/servlet/outputhandler/RTPMethodServlet.java
 Sun Feb  5 17:03:48 2012
@@ -270,7 +270,7 @@ public class RTPMethodServlet extends Ht
                        // also the HOST, PORT must be set correctly in the
                        // RTPScreenSharingSession-Object
                        RoomClient rcl = 
getClientListManager().getClientByPublicSID(
-                                       publicSID);
+                                       publicSID, false);
 
                        HashMap<String, Integer> viewers = session.getViewers();
 

Modified: 
incubator/openmeetings/trunk/singlewebapp/src/app/org/openmeetings/servlet/outputhandler/ScreenServlet.java
URL: 
http://svn.apache.org/viewvc/incubator/openmeetings/trunk/singlewebapp/src/app/org/openmeetings/servlet/outputhandler/ScreenServlet.java?rev=1240767&r1=1240766&r2=1240767&view=diff
==============================================================================
--- 
incubator/openmeetings/trunk/singlewebapp/src/app/org/openmeetings/servlet/outputhandler/ScreenServlet.java
 (original)
+++ 
incubator/openmeetings/trunk/singlewebapp/src/app/org/openmeetings/servlet/outputhandler/ScreenServlet.java
 Sun Feb  5 17:03:48 2012
@@ -239,7 +239,7 @@ public class ScreenServlet extends HttpS
                                boolean userIsInRoom = false;
                                boolean doProcess = false;
 
-                               RoomClient rcl = 
getClientListManager().getClientByPublicSID(publicSID);
+                               RoomClient rcl = 
getClientListManager().getClientByPublicSID(publicSID, false);
                                if (rcl != null) {
                                        log.debug("found RoomClient");
                                        if (rcl.getRoom_id() != null
@@ -452,7 +452,7 @@ public class ScreenServlet extends HttpS
                                boolean doProcess = false;
 
                                OutputStream out = 
httpServletResponse.getOutputStream();
-                               RoomClient rcl = 
getClientListManager().getClientByPublicSID(publicSID);
+                               RoomClient rcl = 
getClientListManager().getClientByPublicSID(publicSID, false);
                                if (rcl != null) {
                                        log.debug("found RoomClient");
                                        if (rcl.getRoom_id() != null


Reply via email to