You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@openmeetings.apache.org by so...@apache.org on 2015/01/20 11:42:12 UTC

svn commit: r1653220 - in /openmeetings: branches/3.0.x/src/main/java/org/apache/openmeetings/remote/red5/ branches/3.0.x/src/screenshare/java/org/apache/openmeetings/screen/webstart/ trunk/singlewebapp/openmeetings-core/src/main/java/org/apache/openme...

Author: solomax
Date: Tue Jan 20 10:42:12 2015
New Revision: 1653220

URL: http://svn.apache.org/r1653220
Log:
RTMPT screen client was tested

Modified:
    openmeetings/branches/3.0.x/src/main/java/org/apache/openmeetings/remote/red5/ScopeApplicationAdapter.java
    openmeetings/branches/3.0.x/src/screenshare/java/org/apache/openmeetings/screen/webstart/CaptureScreen.java
    openmeetings/branches/3.0.x/src/screenshare/java/org/apache/openmeetings/screen/webstart/CoreScreenShare.java
    openmeetings/trunk/singlewebapp/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/red5/ScopeApplicationAdapter.java
    openmeetings/trunk/singlewebapp/openmeetings-screenshare/src/main/java/org/apache/openmeetings/screen/webstart/CaptureScreen.java
    openmeetings/trunk/singlewebapp/openmeetings-screenshare/src/main/java/org/apache/openmeetings/screen/webstart/CoreScreenShare.java

Modified: openmeetings/branches/3.0.x/src/main/java/org/apache/openmeetings/remote/red5/ScopeApplicationAdapter.java
URL: http://svn.apache.org/viewvc/openmeetings/branches/3.0.x/src/main/java/org/apache/openmeetings/remote/red5/ScopeApplicationAdapter.java?rev=1653220&r1=1653219&r2=1653220&view=diff
==============================================================================
--- openmeetings/branches/3.0.x/src/main/java/org/apache/openmeetings/remote/red5/ScopeApplicationAdapter.java (original)
+++ openmeetings/branches/3.0.x/src/main/java/org/apache/openmeetings/remote/red5/ScopeApplicationAdapter.java Tue Jan 20 10:42:12 2015
@@ -1812,11 +1812,13 @@ public class ScopeApplicationAdapter ext
 	 * @param sendScreen send to the current client as well
 	 */
 	public void syncMessageToCurrentScope(final String remoteMethodName, final Object newMessage, final boolean sendSelf, final boolean sendScreen) {
-		try {
-			final IConnection current = Red5.getConnectionLocal();
+		final IConnection current = Red5.getConnectionLocal();
 
-			new Thread(new Runnable() {
-			    public void run() {
+		new Thread() {
+			@Override
+		    public void run() {
+				try {
+					// Send to all Clients of that Scope(Room)
 					for (IConnection conn : current.getScope().getClientConnections()) {
 						if (conn != null && conn instanceof IServiceCapableConnection) {
 							IClient client = conn.getClient();
@@ -1833,12 +1835,11 @@ public class ScopeApplicationAdapter ext
 							((IServiceCapableConnection) conn).invoke(remoteMethodName, new Object[] { newMessage }, ScopeApplicationAdapter.this);
 						}
 					}
-			    }
-			}).start();
-			// Send to all Clients of that Scope(Room)
-		} catch (Exception err) {
-			log.error("[syncMessageToCurrentScope]", err);
-		}
+				} catch (Exception err) {
+					log.error("[syncMessageToCurrentScope -> {}, {}] {}", remoteMethodName, newMessage, err);
+				}
+		    }
+		}.start();
 	}
 
 	/**

Modified: openmeetings/branches/3.0.x/src/screenshare/java/org/apache/openmeetings/screen/webstart/CaptureScreen.java
URL: http://svn.apache.org/viewvc/openmeetings/branches/3.0.x/src/screenshare/java/org/apache/openmeetings/screen/webstart/CaptureScreen.java?rev=1653220&r1=1653219&r2=1653220&view=diff
==============================================================================
--- openmeetings/branches/3.0.x/src/screenshare/java/org/apache/openmeetings/screen/webstart/CaptureScreen.java (original)
+++ openmeetings/branches/3.0.x/src/screenshare/java/org/apache/openmeetings/screen/webstart/CaptureScreen.java Tue Jan 20 10:42:12 2015
@@ -137,9 +137,6 @@ final class CaptureScreen extends Thread
 			if (sendCursor) {
 				cursorScheduler.scheduleWithFixedDelay(new Runnable() {
 					public void run() {
-						if (Red5.getConnectionLocal() == null) {
-							Red5.setConnectionLocal(client.getConnection());
-						}
 						core.sendCursorStatus();
 					}
 				}, 0, timeBetweenFrames * NANO_MULTIPLIER, TimeUnit.NANOSECONDS);

Modified: openmeetings/branches/3.0.x/src/screenshare/java/org/apache/openmeetings/screen/webstart/CoreScreenShare.java
URL: http://svn.apache.org/viewvc/openmeetings/branches/3.0.x/src/screenshare/java/org/apache/openmeetings/screen/webstart/CoreScreenShare.java?rev=1653220&r1=1653219&r2=1653220&view=diff
==============================================================================
--- openmeetings/branches/3.0.x/src/screenshare/java/org/apache/openmeetings/screen/webstart/CoreScreenShare.java (original)
+++ openmeetings/branches/3.0.x/src/screenshare/java/org/apache/openmeetings/screen/webstart/CoreScreenShare.java Tue Jan 20 10:42:12 2015
@@ -44,6 +44,7 @@ import org.apache.commons.codec.binary.H
 import org.apache.openmeetings.screen.webstart.gui.ScreenSharerFrame;
 import org.red5.client.net.rtmp.INetStreamEventHandler;
 import org.red5.io.utils.ObjectMap;
+import org.red5.server.api.Red5;
 import org.red5.server.api.event.IEvent;
 import org.red5.server.api.service.IPendingServiceCall;
 import org.red5.server.api.service.IPendingServiceCallback;
@@ -204,6 +205,9 @@ public class CoreScreenShare implements
 			cursorPosition.put("cursor_y", y);
 
 			if (instance.getConnection() != null) {
+				if (Red5.getConnectionLocal() == null) {
+					Red5.setConnectionLocal(instance.getConnection());
+				}
 				instance.invoke("setNewCursorPosition", new Object[] { cursorPosition }, this);
 			}
 		} catch (NullPointerException npe) {
@@ -238,6 +242,9 @@ public class CoreScreenShare implements
 
 			map.put("user_id", user_id);
 
+			if (Red5.getConnectionLocal() == null) {
+				Red5.setConnectionLocal(instance.getConnection());
+			}
 			instance.invoke("setConnectionAsSharingClient", new Object[] { map }, this);
 		} catch (Exception err) {
 			frame.setStatus("Error: " + err.getLocalizedMessage());
@@ -298,6 +305,9 @@ public class CoreScreenShare implements
 			Map<String, Object> map = new HashMap<String, Object>();
 			map.put(action, true);
 
+			if (Red5.getConnectionLocal() == null) {
+				Red5.setConnectionLocal(instance.getConnection());
+			}
 			instance.invoke("screenSharerAction", new Object[] { map }, this);
 		} catch (Exception err) {
 			log.error("captureScreenStop Exception: ", err);

Modified: openmeetings/trunk/singlewebapp/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/red5/ScopeApplicationAdapter.java
URL: http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/red5/ScopeApplicationAdapter.java?rev=1653220&r1=1653219&r2=1653220&view=diff
==============================================================================
--- openmeetings/trunk/singlewebapp/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/red5/ScopeApplicationAdapter.java (original)
+++ openmeetings/trunk/singlewebapp/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/red5/ScopeApplicationAdapter.java Tue Jan 20 10:42:12 2015
@@ -111,12 +111,12 @@ public class ScopeApplicationAdapter ext
 
 	private static AtomicLong broadCastCounter = new AtomicLong(0);
 
-	public synchronized void resultReceived(IPendingServiceCall arg0) {
+	public void resultReceived(IPendingServiceCall arg0) {
 		// TODO Auto-generated method stub
 	}
 
 	@Override
-	public synchronized boolean appStart(IScope scope) {
+	public boolean appStart(IScope scope) {
 		try {
 			OmFileHelper.setOmHome(scope.getResource("/").getFile());
 
@@ -482,7 +482,7 @@ public class ScopeApplicationAdapter ext
 	 * Exit Room by Application
 	 * 
 	 */
-	public synchronized void logicalRoomLeave() {
+	public void logicalRoomLeave() {
 		log.debug("logicalRoomLeave ");
 		try {
 			IConnection current = Red5.getConnectionLocal();
@@ -508,7 +508,7 @@ public class ScopeApplicationAdapter ext
 	 * @param currentClient
 	 * @param currentScope
 	 */
-	public synchronized void roomLeaveByScope(Client currentClient, IScope currentScope, boolean removeUserFromSessionList) {
+	public void roomLeaveByScope(Client currentClient, IScope currentScope, boolean removeUserFromSessionList) {
 		try {
 			log.debug("currentClient " + currentClient);
 			Long room_id = currentClient.getRoom_id();
@@ -616,7 +616,7 @@ public class ScopeApplicationAdapter ext
 	 * @see org.red5.server.adapter.MultiThreadedApplicationAdapter#streamPublishStart(org.red5.server.api.stream.IBroadcastStream)
 	 */
 	@Override
-	public synchronized void streamPublishStart(IBroadcastStream stream) {
+	public void streamPublishStart(IBroadcastStream stream) {
 		try {
 			log.debug("-----------  streamPublishStart");
 			IConnection current = Red5.getConnectionLocal();
@@ -711,7 +711,7 @@ public class ScopeApplicationAdapter ext
 	 * @see org.red5.server.adapter.MultiThreadedApplicationAdapter#streamBroadcastClose(org.red5.server.api.stream.IBroadcastStream)
 	 */
 	@Override
-	public synchronized void streamBroadcastClose(IBroadcastStream stream) {
+	public void streamBroadcastClose(IBroadcastStream stream) {
 
 		// Notify all the clients that the stream had been closed
 		log.debug("start streamBroadcastClose broadcast close: " + stream.getPublishedName());
@@ -846,31 +846,13 @@ public class ScopeApplicationAdapter ext
 			Map cursor = (Map) item;
 			cursor.put("streamPublishName", currentClient.getStreamPublishName());
 
-			// Notify all users of the same Scope
-			for (IConnection conn : current.getScope().getClientConnections()) {
-				if (conn != null) {
-					if (conn instanceof IServiceCapableConnection) {
-						IClient client = conn.getClient();
-						if (SessionVariablesUtil.isScreenClient(client)) {
-							// screen sharing clients do not receive events
-							continue;
-						} else if (SessionVariablesUtil.isAVClient(client)) {
-							// AVClients or potential AVClients do not receive events
-							continue;
-						} if (client.getId().equals(current.getClient().getId())) {
-							// don't send back to same user
-							continue;
-						}
-						((IServiceCapableConnection) conn).invoke("newRed5ScreenCursor", new Object[] { cursor }, this);
-					}
-				}
-			}
+		    syncMessageToCurrentScope("newRed5ScreenCursor", cursor, true, false);
 		} catch (Exception err) {
 			log.error("[setNewCursorPosition]", err);
 		}
 	}
 
-	public synchronized Long removeModerator(String publicSID) {
+	public Long removeModerator(String publicSID) {
 		try {
 			log.debug("-----------  removeModerator: " + publicSID);
 
@@ -890,34 +872,17 @@ public class ScopeApplicationAdapter ext
 
 			List<Client> currentMods = sessionManager.getCurrentModeratorByRoom(room_id);
 
-			// Notify all clients of the same scope (room)
-			for (IConnection conn : current.getScope().getClientConnections()) {
-				if (conn != null) {
-					if (conn instanceof IServiceCapableConnection) {
-						IClient client = conn.getClient();
-						if (SessionVariablesUtil.isScreenClient(client)) {
-							// screen sharing clients do not receive events
-							continue;
-						} else if (SessionVariablesUtil.isAVClient(client)) {
-							// AVClients or potential AVClients do not receive events
-							continue;
-						}
-						((IServiceCapableConnection) conn).invoke("setNewModeratorByList", new Object[] { currentMods }, this);
-					}
-				}
-			}
+		    syncMessageToCurrentScope("setNewModeratorByList", currentMods, true);
 		} catch (Exception err) {
 			log.error("[addModerator]", err);
 		}
 		return -1L;
 	}
 
-	public synchronized Long setBroadCastingFlag(String publicSID, boolean value, Integer interviewPodId) {
+	public Long setBroadCastingFlag(String publicSID, boolean value, Integer interviewPodId) {
 		try {
 			log.debug("-----------  setBroadCastingFlag: " + publicSID);
 
-			IConnection current = Red5.getConnectionLocal();
-			// String streamid = current.getClient().getId();
 
             Client currentClient = sessionManager.getClientByPublicSID(publicSID, false, null);
 
@@ -932,22 +897,7 @@ public class ScopeApplicationAdapter ext
 		    sessionManager.updateClientByStreamId(currentClient.getStreamid(), currentClient, false, null);
 		    
 			// Notify all clients of the same scope (room)
-			for (IConnection conn : current.getScope().getClientConnections()) {
-				if (conn != null) {
-					if (conn instanceof IServiceCapableConnection) {
-						IClient client = conn.getClient();
-						if (SessionVariablesUtil.isScreenClient(client)) {
-							// screen sharing clients do not receive events
-							continue;
-						} else if (SessionVariablesUtil.isAVClient(client)) {
-							// AVClients or potential AVClients do not receive events
-							continue;
-						}
-					
-						((IServiceCapableConnection) conn).invoke("setNewBroadCastingFlag", new Object[] { currentClient }, this);
-					}
-				}
-			}
+		    syncMessageToCurrentScope("setNewBroadCastingFlag", currentClient, true);
 		} catch (Exception err) {
 			log.error("[setBroadCastingFlag]", err);
 		}
@@ -1108,7 +1058,7 @@ public class ScopeApplicationAdapter ext
 	 * @param interviewPodId
 	 * @return RoomClient being updated in case of no errors, null otherwise
 	 */
-	public synchronized Client setUserAVSettings(String avsettings,
+	public Client setUserAVSettings(String avsettings,
 			Object newMessage, Integer vWidth, Integer vHeight, 
 			long room_id, String publicSID, Integer interviewPodId) {
 		try {
@@ -1135,21 +1085,7 @@ public class ScopeApplicationAdapter ext
 			hsm.put("client", currentClient);
 			hsm.put("message", newMessage);
 
-			for (IConnection conn : current.getScope().getClientConnections()) {
-				if (conn != null) {
-					if (conn instanceof IServiceCapableConnection) {
-						IClient client = conn.getClient();
-						if (SessionVariablesUtil.isScreenClient(client)) {
-							// screen sharing clients do not receive events
-							continue;
-						} else if (SessionVariablesUtil.isAVClient(client)) {
-							// AVClients or potential AVClients do not receive events
-							continue;
-						}
-						((IServiceCapableConnection)conn).invoke("sendVarsToMessageWithClient", new Object[] { hsm }, this);
-					}
-				}
-			}
+			syncMessageToCurrentScope("sendVarsToMessageWithClient", hsm, true);
 			return currentClient;
 		} catch (Exception err) {
 			log.error("[setUserAVSettings]", err);
@@ -1720,12 +1656,11 @@ public class ScopeApplicationAdapter ext
 		}
 	}
 
-	public synchronized int sendVarsModeratorGeneral(Object vars) {
+	public int sendVarsModeratorGeneral(Object vars) {
 		log.debug("*..*sendVars: " + vars);
 		try {
 			IConnection current = Red5.getConnectionLocal();
-			Client currentClient = this.sessionManager
-					.getClientByStreamId(current.getClient().getId(), null);
+			Client currentClient = sessionManager.getClientByStreamId(current.getClient().getId(), null);
 			// Long room_id = currentClient.getRoom_id();
 
 			log.debug("***** id: " + currentClient.getStreamid());
@@ -1735,24 +1670,7 @@ public class ScopeApplicationAdapter ext
 			if (ismod) {
 				log.debug("CurrentScope :" + current.getScope().getName());
 				// Send to all Clients of the same Scope
-				for (IConnection conn : current.getScope().getClientConnections()) {
-					if (conn != null) {
-						if (conn instanceof IServiceCapableConnection) {
-							IClient client = conn.getClient();
-							if (SessionVariablesUtil.isScreenClient(client)) {
-								// screen sharing clients do not receive events
-								continue;
-							} else if (SessionVariablesUtil.isAVClient(client)) {
-								// AVClients or potential AVClients do not receive events
-								continue;
-							} if (client.getId().equals(current.getClient().getId())) {
-								// don't send back to same user
-								continue;
-							}
-							((IServiceCapableConnection) conn).invoke("sendVarsToModeratorGeneral", new Object[] { vars },this);
-						}
-					}
-				}
+				syncMessageToCurrentScope("sendVarsToModeratorGeneral", vars, false);
 				return 1;
 			} else {
 				// log.debug("*..*you are not allowed to send: "+ismod);
@@ -1881,11 +1799,13 @@ public class ScopeApplicationAdapter ext
 	 * @param sendScreen send to the current client as well
 	 */
 	public void syncMessageToCurrentScope(final String remoteMethodName, final Object newMessage, final boolean sendSelf, final boolean sendScreen) {
-		try {
-			final IConnection current = Red5.getConnectionLocal();
+		final IConnection current = Red5.getConnectionLocal();
 
-			new Thread(new Runnable() {
-			    public void run() {
+		new Thread() {
+			@Override
+		    public void run() {
+				try {
+					// Send to all Clients of that Scope(Room)
 					for (IConnection conn : current.getScope().getClientConnections()) {
 						if (conn != null && conn instanceof IServiceCapableConnection) {
 							IClient client = conn.getClient();
@@ -1902,12 +1822,11 @@ public class ScopeApplicationAdapter ext
 							((IServiceCapableConnection) conn).invoke(remoteMethodName, new Object[] { newMessage }, ScopeApplicationAdapter.this);
 						}
 					}
-			    }
-			}).start();
-			// Send to all Clients of that Scope(Room)
-		} catch (Exception err) {
-			log.error("[syncMessageToCurrentScope]", err);
-		}
+				} catch (Exception err) {
+					log.error("[syncMessageToCurrentScope -> {}, {}] {}", remoteMethodName, newMessage, err);
+				}
+		    }
+		}.start();
 	}
 
 	/**
@@ -2445,7 +2364,7 @@ public class ScopeApplicationAdapter ext
         return null;
     }
 
-	public synchronized void setSipTransport(Long room_id, String publicSID, String broadCastId) {
+	public void setSipTransport(Long room_id, String publicSID, String broadCastId) {
 		log.debug("-----------  setSipTransport");
 		IConnection current = Red5.getConnectionLocal();
 		IClient c = current.getClient();
@@ -2466,26 +2385,6 @@ public class ScopeApplicationAdapter ext
 		sessionManager.updateClientByStreamId(streamid, currentClient, false, null);
 		SessionVariablesUtil.initClient(c, false, publicSID);
 
-		for (IConnection conn : current.getScope().getClientConnections()) {
-			if (conn != null) {
-				IClient client = conn.getClient();
-				if (SessionVariablesUtil.isScreenClient(client)) {
-					// screen sharing clients do not receive events
-					continue;
-				} else if (SessionVariablesUtil.isAVClient(client)) {
-					// AVClients or potential AVClients do not receive events
-					continue;
-				}
-
-				if (!client.getId().equals(streamid)) {
-					// It is not needed to send back that event to the actual Moderator
-					// as it will be already triggered in the result of this Function in the Client
-					if (conn instanceof IServiceCapableConnection) {
-						((IServiceCapableConnection) conn).invoke("addNewUser", new Object[] { currentClient }, this);
-						log.debug("sending setSipTransport to " + conn);
-					}
-				}
-			}
-		}
+		syncMessageToCurrentScope("addNewUser", currentClient, false);
 	}
 }

Modified: openmeetings/trunk/singlewebapp/openmeetings-screenshare/src/main/java/org/apache/openmeetings/screen/webstart/CaptureScreen.java
URL: http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/openmeetings-screenshare/src/main/java/org/apache/openmeetings/screen/webstart/CaptureScreen.java?rev=1653220&r1=1653219&r2=1653220&view=diff
==============================================================================
--- openmeetings/trunk/singlewebapp/openmeetings-screenshare/src/main/java/org/apache/openmeetings/screen/webstart/CaptureScreen.java (original)
+++ openmeetings/trunk/singlewebapp/openmeetings-screenshare/src/main/java/org/apache/openmeetings/screen/webstart/CaptureScreen.java Tue Jan 20 10:42:12 2015
@@ -137,9 +137,6 @@ final class CaptureScreen extends Thread
 			if (sendCursor) {
 				cursorScheduler.scheduleWithFixedDelay(new Runnable() {
 					public void run() {
-						if (Red5.getConnectionLocal() == null) {
-							Red5.setConnectionLocal(client.getConnection());
-						}
 						core.sendCursorStatus();
 					}
 				}, 0, timeBetweenFrames * NANO_MULTIPLIER, TimeUnit.NANOSECONDS);

Modified: openmeetings/trunk/singlewebapp/openmeetings-screenshare/src/main/java/org/apache/openmeetings/screen/webstart/CoreScreenShare.java
URL: http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/openmeetings-screenshare/src/main/java/org/apache/openmeetings/screen/webstart/CoreScreenShare.java?rev=1653220&r1=1653219&r2=1653220&view=diff
==============================================================================
--- openmeetings/trunk/singlewebapp/openmeetings-screenshare/src/main/java/org/apache/openmeetings/screen/webstart/CoreScreenShare.java (original)
+++ openmeetings/trunk/singlewebapp/openmeetings-screenshare/src/main/java/org/apache/openmeetings/screen/webstart/CoreScreenShare.java Tue Jan 20 10:42:12 2015
@@ -44,6 +44,7 @@ import org.apache.commons.codec.binary.H
 import org.apache.openmeetings.screen.webstart.gui.ScreenSharerFrame;
 import org.red5.client.net.rtmp.INetStreamEventHandler;
 import org.red5.io.utils.ObjectMap;
+import org.red5.server.api.Red5;
 import org.red5.server.api.event.IEvent;
 import org.red5.server.api.service.IPendingServiceCall;
 import org.red5.server.api.service.IPendingServiceCallback;
@@ -204,6 +205,9 @@ public class CoreScreenShare implements
 			cursorPosition.put("cursor_y", y);
 
 			if (instance.getConnection() != null) {
+				if (Red5.getConnectionLocal() == null) {
+					Red5.setConnectionLocal(instance.getConnection());
+				}
 				instance.invoke("setNewCursorPosition", new Object[] { cursorPosition }, this);
 			}
 		} catch (NullPointerException npe) {
@@ -238,6 +242,9 @@ public class CoreScreenShare implements
 
 			map.put("user_id", user_id);
 
+			if (Red5.getConnectionLocal() == null) {
+				Red5.setConnectionLocal(instance.getConnection());
+			}
 			instance.invoke("setConnectionAsSharingClient", new Object[] { map }, this);
 		} catch (Exception err) {
 			frame.setStatus("Error: " + err.getLocalizedMessage());
@@ -298,6 +305,9 @@ public class CoreScreenShare implements
 			Map<String, Object> map = new HashMap<String, Object>();
 			map.put(action, true);
 
+			if (Red5.getConnectionLocal() == null) {
+				Red5.setConnectionLocal(instance.getConnection());
+			}
 			instance.invoke("screenSharerAction", new Object[] { map }, this);
 		} catch (Exception err) {
 			log.error("captureScreenStop Exception: ", err);