[Red5commits] [1165] moved bandwidth measurement to ApplicationAdapter? for the applications that nee

jbauch luke at codegent.com
Thu Jul 13 16:30:05 EDT 2006


moved bandwidth measurement to ApplicationAdapter? for the applications that need it (Trac #56)


Timestamp: 07/14/06 06:26:04 (less than one hour ago) 
Change: 1165 
Author: jbauch

Files (see diff or trac for details): 
java/server/trunk/src/org/red5/server/adapter/ApplicationAdapter.java
java/server/trunk/src/org/red5/server/net/rtmp/RTMPConnection.java
java/server/trunk/src/org/red5/server/net/rtmp/RTMPHandler.java
java/server/trunk/webapps/oflaDemo/WEB-INF/src/org/red5/server/webapp/oflaDemo/Application.java


Trac: http://mirror1.cvsdude.com/trac/osflash/red5/changeset/1165

Index: /java/server/trunk/src/org/red5/server/adapter/ApplicationAdapter.java
===================================================================
--- /java/server/trunk/src/org/red5/server/adapter/ApplicationAdapter.java (revision 1132)
+++ /java/server/trunk/src/org/red5/server/adapter/ApplicationAdapter.java (revision 1165)
@@ -40,7 +40,9 @@
 import org.red5.server.api.IConnection;
 import org.red5.server.api.IScope;
+import org.red5.server.api.Red5;
 import org.red5.server.api.ScopeUtils;
 import org.red5.server.api.scheduling.IScheduledJob;
 import org.red5.server.api.scheduling.ISchedulingService;
+import org.red5.server.api.service.ServiceUtils;
 import org.red5.server.api.so.ISharedObject;
 import org.red5.server.api.so.ISharedObjectService;
@@ -194,4 +196,46 @@
 	public void roomLeave(IClient client, IScope room){
 		log.debug("roomLeave: "+client+" << "+room);
+	}
+
+	/**
+	 * Try to measure bandwidth of current connection.
+	 * 
+	 * This is required for some FLV player to work because they require
+	 * the "onBWDone" method to be called on the connection.
+	 */
+	public void measureBandwidth() {
+		measureBandwidth(Red5.getConnectionLocal());
+	}
+	
+	/**
+	 * Try to measure bandwidth of given connection.
+	 * 
+	 * This is required for some FLV player to work because they require
+	 * the "onBWDone" method to be called on the connection.
+	 * 
+	 * @param conn
+	 * 			the connection to measure the bandwidth for 
+	 */
+	public void measureBandwidth(IConnection conn) {
+		// dummy for now, this makes flv player work
+		// they dont wait for connected status they wait for onBWDone
+		ServiceUtils.invokeOnConnection(conn, "onBWDone", new Object[]{});
+		/*
+		ServiceUtils.invokeOnConnection(conn, "onBWCheck", new Object[] {}, new IPendingServiceCallback() {
+			public void resultReceived(IPendingServiceCall call) {
+				log.debug("onBWCheck 1 result: " + call.getResult());
+			}
+		});
+		int[] filler = new int[1024];
+		ServiceUtils.invokeOnConnection(conn, "onBWCheck", new Object[] { filler }, new IPendingServiceCallback() {
+			public void resultReceived(IPendingServiceCall call) {
+				log.debug("onBWCheck 2 result: " + call.getResult());
+				ServiceUtils.invokeOnConnection(conn, "onBWDone", new Object[] { new Integer(1000), new Integer(300), new Integer(6000), new Integer(300) }, new IPendingServiceCallback() {
+					public void resultReceived(IPendingServiceCall call) {
+						log.debug("onBWDone result: " + call.getResult());
+					}
+				});
+			}
+		});*/
 	}
 	
Index: /java/server/trunk/src/org/red5/server/net/rtmp/RTMPHandler.java
===================================================================
--- /java/server/trunk/src/org/red5/server/net/rtmp/RTMPHandler.java (revision 1162)
+++ /java/server/trunk/src/org/red5/server/net/rtmp/RTMPHandler.java (revision 1165)
@@ -300,5 +300,4 @@
 		
 		boolean disconnectOnReturn = false;
-		boolean runBandwidthCheck = false;
 		if(call.getServiceName() == null){
 			log.info("call: "+call);
@@ -344,5 +343,4 @@
 									conn.getChannel((byte) 2).write(new Ping((short)0,0,-1)); 
 									conn.ping();
-									runBandwidthCheck = true;
 								} else {
 									log.debug("connect failed");
@@ -404,7 +402,4 @@
 			log.debug("sending reply");
 			channel.write(reply);
-			if (runBandwidthCheck){
-				conn.runBandwidthCheck();
-			}
 			if (disconnectOnReturn)
 				conn.close();
Index: /java/server/trunk/src/org/red5/server/net/rtmp/RTMPConnection.java
===================================================================
--- /java/server/trunk/src/org/red5/server/net/rtmp/RTMPConnection.java (revision 1162)
+++ /java/server/trunk/src/org/red5/server/net/rtmp/RTMPConnection.java (revision 1165)
@@ -387,28 +387,4 @@
 	}
 
-	public void runBandwidthCheck() {
-		// dummy for now, this makes flv player work
-		// they dont wait for connected status they wait for onBWDone
-		invoke("onBWDone",new Object[]{});
-		/*
-		invoke("onBWCheck", new Object[] {}, new IPendingServiceCallback() {
-			public void resultReceived(IPendingServiceCall call) {
-				log.debug("onBWCheck 1 result: " + call.getResult());
-			}
-		});
-		int[] filler = new int[1024];
-		invoke("onBWCheck", new Object[] { filler }, new IPendingServiceCallback() {
-			public void resultReceived(IPendingServiceCall call) {
-				log.debug("onBWCheck 2 result: " + call.getResult());
-				invoke("onBWDone", new Object[] { new Integer(1000), new Integer(300), new Integer(6000), new Integer(300) }, new IPendingServiceCallback() {
-					public void resultReceived(IPendingServiceCall call) {
-						log.debug("onBWDone result: " + call.getResult());
-					}
-				});
-			}
-		});*/
-
-	}
-	
 	public String toString() {
 		return getClass().getSimpleName() + " from " + getRemoteAddress() + ":" + getRemotePort() + 
Index: /java/server/trunk/webapps/oflaDemo/WEB-INF/src/org/red5/server/webapp/oflaDemo/Application.java
===================================================================
--- /java/server/trunk/webapps/oflaDemo/WEB-INF/src/org/red5/server/webapp/oflaDemo/Application.java (revision 1127)
+++ /java/server/trunk/webapps/oflaDemo/WEB-INF/src/org/red5/server/webapp/oflaDemo/Application.java (revision 1165)
@@ -23,4 +23,6 @@
 	@Override
 	public boolean appConnect(IConnection conn, Object[] params) {
+		// Trigger calling of "onBWDone", required for some FLV players
+		measureBandwidth(conn);
 		if (conn instanceof IStreamCapableConnection) {
 			IStreamCapableConnection streamConn = (IStreamCapableConnection) conn;


Note:
Diffs are chopped if more than 25k.
This is to get past the limit on the mailing list.



More information about the Red5commits mailing list