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