[Red5devs] [red5 commit] r3101 - doc/trunk java/server/branches/paulg_mp4/src/org/red5/server/api java/server/branches/pau...

codesite-noreply at google.com codesite-noreply at google.com
Wed Sep 24 22:52:17 PDT 2008


Author: mondain
Date: Wed Sep 24 22:51:37 2008
New Revision: 3101

Modified:
    doc/trunk/changelog.txt
    java/server/branches/paulg_mp4/src/org/red5/server/api/Red5.java
    java/server/branches/paulg_mp4/src/org/red5/server/service/Installer.java
     
java/server/branches/paulg_mp4/src/org/red5/server/tomcat/TomcatLoader.java
     
java/server/branches/paulg_mp4/src/org/red5/server/tomcat/TomcatVHostLoader.java
    java/server/trunk/src/org/red5/server/api/Red5.java
    java/server/trunk/src/org/red5/server/net/rtmp/RTMPHandler.java
     
java/server/trunk/src/org/red5/server/net/rtmp/codec/RTMPProtocolDecoder.java
    java/server/trunk/src/org/red5/server/net/rtmp/event/Ping.java

Log:
Updated version numbers and merged some updates from trunk to mp4 branch

Modified: doc/trunk/changelog.txt
==============================================================================
--- doc/trunk/changelog.txt	(original)
+++ doc/trunk/changelog.txt	Wed Sep 24 22:51:37 2008
@@ -4,6 +4,15 @@
  This file contains informations about the changes between the different
  versions of Red5.

+Red5 0.9.0  (unreleased)
+------------------------
+New Features:
+
+Bugfixes:
+
+Other:
+
+
  Red5 0.8.1  (unreleased)
  ------------------------
  New Features:
@@ -51,6 +60,11 @@
  Other:
  - Split demos and flash sources into their own top level directories
  - Added application snapshot repository
+
+
+Red5 0.7.1
+------------------------
+Version renamed 0.8.0 for release


  Red5 0.7.0  (2008-02-23)

Modified: java/server/branches/paulg_mp4/src/org/red5/server/api/Red5.java
==============================================================================
--- java/server/branches/paulg_mp4/src/org/red5/server/api/Red5.java	 
(original)
+++ java/server/branches/paulg_mp4/src/org/red5/server/api/Red5.java	Wed  
Sep 24 22:51:37 2008
@@ -59,12 +59,12 @@
      /**
       * Current server version with revision
       */
-    public static final String VERSION = "Red5 Server 0.7.2-dev $Revision:  
3020 $";
+    public static final String VERSION = "Red5 Server 0.9.0-dev $Revision:  
3020 $";

      /**
       * Current server version for fmsVer requests
       */
-    public static final String FMS_VERSION = "RED5/0,7,2,0";
+    public static final String FMS_VERSION = "RED5/0,9,0,0";

      /**
       * Server start time

Modified:  
java/server/branches/paulg_mp4/src/org/red5/server/service/Installer.java
==============================================================================
---  
java/server/branches/paulg_mp4/src/org/red5/server/service/Installer.java	 
(original)
+++  
java/server/branches/paulg_mp4/src/org/red5/server/service/Installer.java	 
Wed Sep 24 22:51:37 2008
@@ -57,6 +57,8 @@
  	
  	private String applicationRepositoryUrl;

+	private static final String userAgent = "Mozilla/4.0 (compatible; Red5  
Server)";
+	
  	{
  		log.info("Installer service created");
  	}
@@ -103,7 +105,7 @@
  		client.getHttpConnectionManager().getParams().setConnectionTimeout(5000);
  		//get the params for the client
  		HttpClientParams params = client.getParams();
-		params.setParameter(HttpMethodParams.USER_AGENT, "Mozilla/4.0  
(compatible; Red5 Server)");
+		params.setParameter(HttpMethodParams.USER_AGENT, userAgent);
  		//try the wav version first
  		HttpMethod method = new GetMethod(applicationRepositoryUrl  
+ "registry.xml");
  		//follow any 302's although there shouldnt be any
@@ -198,7 +200,7 @@
  				 
client.getHttpConnectionManager().getParams().setConnectionTimeout(5000);
  				//get the params for the client
  				HttpClientParams params = client.getParams();
-				params.setParameter(HttpMethodParams.USER_AGENT, "Mozilla/4.0  
(compatible; Red5 Server)");
+				params.setParameter(HttpMethodParams.USER_AGENT, userAgent);
  				params.setParameter(HttpMethodParams.STRICT_TRANSFER_ENCODING,  
Boolean.TRUE);
  				
  				//try the wav version first
@@ -215,12 +217,11 @@
  					//create output file
  					fos = new FileOutputStream(srcDir + '/' + applicationWarName);
  					log.debug("Writing response to {}/{}", srcDir, applicationWarName);			 
					
-					InputStream is = method.getResponseBodyAsStream();
-					byte[] buf = new byte[512];
-					while (is.read(buf) != -1) {
+					
+					// have to receive the response as a byte array.  This has the  
advantage of writing to the filesystem
+					// faster and it also works on macs ;)
+					byte[] buf = method.getResponseBody();
  						fos.write(buf);
-					}
-					is.close();
  					fos.flush();
  					//
  					result = true;

Modified:  
java/server/branches/paulg_mp4/src/org/red5/server/tomcat/TomcatLoader.java
==============================================================================
---  
java/server/branches/paulg_mp4/src/org/red5/server/tomcat/TomcatLoader.java	 
(original)
+++  
java/server/branches/paulg_mp4/src/org/red5/server/tomcat/TomcatLoader.java	 
Wed Sep 24 22:51:37 2008
@@ -108,6 +108,9 @@
  		System.setProperty("tomcat.home", serverRoot);
  		System.setProperty("catalina.home", serverRoot);
  		System.setProperty("catalina.base", serverRoot);
+		//
+		System.setProperty("catalina.shared.loader", serverRoot + "/lib/*.jar");
+		System.setProperty("shared.loader", serverRoot + "/lib/*.jar");
  		// create one embedded (server) and use it everywhere
  		embedded = new Embedded();	
  	}
@@ -157,7 +160,34 @@
  	public Context addContext(String path, String docBase) {
  		log.debug("Add context - path: {} docbase: {}", path, docBase);
  		org.apache.catalina.Context c = embedded.createContext(path, docBase);
-		log.debug("Context name: {}", c.getName());
+		log.debug("Context name: {} docbase: {} encoded: {}", new  
Object[]{c.getName(), c.getDocBase(), c.getEncodedPath()});
+		//see if we can load the webapp cl
+		try {
+			Class.forName("org.red5.server.tomcat.WebappClassLoader").newInstance();
+		} catch (Exception e) {
+			log.error("{}", e);
+			e.printStackTrace();
+		}
+		if (c != null) {
+			Object ldr = c.getLoader();
+			log.debug("Context loader: {}", ldr);
+			if (ldr != null) {
+				if (ldr instanceof WebappLoader) {
+					log.debug("Replacing context loader");				
+					((WebappLoader)  
ldr).setLoaderClass("org.red5.server.tomcat.WebappClassLoader");
+				} else {
+					log.debug("Context loader was instance of {}",  
ldr.getClass().getName());
+				}
+			} else {
+				log.debug("Context loader was null");
+				ClassLoader classloader =  
Thread.currentThread().getContextClassLoader();
+				log.debug("Thread context class loader: {}", classloader);
+				WebappLoader wldr = new WebappLoader(classloader);
+				wldr.setLoaderClass("org.red5.server.tomcat.WebappClassLoader");
+				c.setLoader(wldr);
+			}  				    				
+		}
+		log.debug("Context loader (check): {}", c.getLoader());
  		host.addChild(c);
  		LoaderBase.setRed5ApplicationContext(path, new  
TomcatApplicationContext(c));
  		return c;
@@ -258,7 +288,7 @@
  			webappFolder = System.getProperty("red5.root") + "/webapps";
  		}
  		System.setProperty("red5.webapp.root", webappFolder);
-		log.info("Application root: " + webappFolder);
+		log.info("Application root: {}", webappFolder);

  		// scan for additional webapp contexts

@@ -281,22 +311,6 @@
  					log.debug("Adding context from directory scan: {}", dirName);
  					ctx = addContext(dirName, webappContextDir);
  				}
-				if (ctx != null) {
-    				Object ldr = ctx.getLoader();
-    				if (ldr != null) {
-    					if (ldr instanceof WebappLoader) {
-    						log.debug("Replacing context class loader");				
-    						((WebappLoader)  
ldr).setLoaderClass("org.red5.server.tomcat.WebappClassLoader");
-    					} else {
-    						log.debug("Context class loader was instance of {}",  
ldr.getClass().getName());
-    					}
-    				} else {
-    					log.debug("Context class loader was null");
-    					WebappLoader wldr = new WebappLoader(classloader);
-    					wldr.setLoaderClass("org.red5.server.tomcat.WebappClassLoader");
-    					ctx.setLoader(wldr);
-    				}
-				}
  				webappContextDir = null;
  			}
  		}
@@ -468,8 +482,8 @@
  	 * @return
  	 */
  	public boolean startWebApplication(String applicationName) {
-		boolean result = false;
  		log.info("Starting Tomcat - Web application");	
+		boolean result = false;
  		
  		log.debug("Webapp root: {}", webappFolder);
  		
@@ -478,32 +492,25 @@

  		Container cont = null;
  		
+		if (webappFolder == null) {
+			// Use default webapps directory
+			webappFolder = System.getProperty("red5.root") + "/webapps";
+		}
+		System.setProperty("red5.webapp.root", webappFolder);
+		log.info("Application root: {}", webappFolder);
+
+		// scan for additional webapp contexts
+
+		// Root applications directory
+		File appDirBase = new File(webappFolder);
+		
  		//check if the context already exists for the host
  		if ((cont = host.findChild(contextName)) == null) {
  			log.debug("Context did not exist in host");
-			String webappContextDir = FileUtil.formatPath(webappFolder,  
applicationName);
+			String webappContextDir =  
FileUtil.formatPath(appDirBase.getAbsolutePath(), applicationName);
  			log.debug("Webapp context directory (full path): {}", webappContextDir);
-			//prepend slash
-			Context ctx = addContext(contextName, webappContextDir);
-    		if (ctx != null) {
-    			Object ldr = ctx.getLoader();
-    			if (ldr != null) {
-    				if (ldr instanceof WebappLoader) {
-    					log.debug("Replacing context loader");				
-    					((WebappLoader)  
ldr).setLoaderClass("org.red5.server.tomcat.WebappClassLoader");
-    				} else {
-    					log.debug("Context loader was instance of {}",  
ldr.getClass().getName());
-    				}
-    			} else {
-    				log.debug("Context loader was null");
-    				ClassLoader classloader =  
Thread.currentThread().getContextClassLoader();
-    				WebappLoader wldr = new WebappLoader(classloader);
-    				wldr.setLoaderClass("org.red5.server.tomcat.WebappClassLoader");
-    				ctx.setLoader(wldr);
-    			}  				    				
-    		}
      		//set the newly created context as the current container
-    		cont = ctx;
+    		cont = addContext(contextName, webappContextDir);
  		} else {
  			log.debug("Context already exists in host");
  		}

Modified:  
java/server/branches/paulg_mp4/src/org/red5/server/tomcat/TomcatVHostLoader.java
==============================================================================
---  
java/server/branches/paulg_mp4/src/org/red5/server/tomcat/TomcatVHostLoader.java	 
(original)
+++  
java/server/branches/paulg_mp4/src/org/red5/server/tomcat/TomcatVHostLoader.java	 
Wed Sep 24 22:51:37 2008
@@ -132,22 +132,6 @@
  					log.debug("Adding context from directory scan: {}", dirName);
  					ctx = addContext(dirName, webappContextDir);
  				}
-				if (ctx != null) {
-    				Object ldr = ctx.getLoader();
-    				if (ldr != null) {
-    					if (ldr instanceof WebappLoader) {
-    						log.debug("Replacing context loader");				
-    						((WebappLoader)  
ldr).setLoaderClass("org.red5.server.tomcat.WebappClassLoader");
-    					} else {
-    						log.debug("Context loader was instance of {}",  
ldr.getClass().getName());
-    					}
-    				} else {
-    					log.debug("Context loader was null");
-    					WebappLoader wldr = new WebappLoader(classloader);
-    					wldr.setLoaderClass("org.red5.server.tomcat.WebappClassLoader");
-    					ctx.setLoader(wldr);
-    				}  				    				
-				}	
  				webappContextDir = null;			
  			}
  		}
@@ -296,23 +280,6 @@
  			String webappContextDir = FileUtil.formatPath(webappRoot,  
applicationName);
  			//prepend slash
  			Context ctx = addContext(contextName, webappContextDir);
-    		if (ctx != null) {
-    			Object ldr = ctx.getLoader();
-    			if (ldr != null) {
-    				if (ldr instanceof WebappLoader) {
-    					log.debug("Replacing context loader");				
-    					((WebappLoader)  
ldr).setLoaderClass("org.red5.server.tomcat.WebappClassLoader");
-    				} else {
-    					log.debug("Context loader was instance of {}",  
ldr.getClass().getName());
-    				}
-    			} else {
-    				log.debug("Context loader was null");
-    				ClassLoader classloader =  
Thread.currentThread().getContextClassLoader();
-    				WebappLoader wldr = new WebappLoader(classloader);
-    				wldr.setLoaderClass("org.red5.server.tomcat.WebappClassLoader");
-    				ctx.setLoader(wldr);
-    			}  				    				
-    		}
      		//set the newly created context as the current container
      		cont = ctx;
  		} else {

Modified: java/server/trunk/src/org/red5/server/api/Red5.java
==============================================================================
--- java/server/trunk/src/org/red5/server/api/Red5.java	(original)
+++ java/server/trunk/src/org/red5/server/api/Red5.java	Wed Sep 24 22:51:37  
2008
@@ -59,7 +59,12 @@
      /**
       * Current server version with revision
       */
-    public static final String VERSION = "Red5 Server 0.7.1-dev  
$Revision$";
+    public static final String VERSION = "Red5 Server 0.8.0-dev  
$Revision$";
+
+    /**
+     * Current server version for fmsVer requests
+     */
+    public static final String FMS_VERSION = "RED5/0,8,0,0";

      /**
       * Server start time
@@ -152,6 +157,15 @@
  	 */
  	public static String getVersion() {
  	    return VERSION;
+	}
+	
+	/**
+	 * Returns the current version for fmsVer requests
+	 *
+	 * @return String fms version
+	 */
+	public static String getFMSVersion() {
+	    return FMS_VERSION;
  	}
  	
  	/**

Modified: java/server/trunk/src/org/red5/server/net/rtmp/RTMPHandler.java
==============================================================================
--- java/server/trunk/src/org/red5/server/net/rtmp/RTMPHandler.java	 
(original)
+++ java/server/trunk/src/org/red5/server/net/rtmp/RTMPHandler.java	Wed Sep  
24 22:51:37 2008
@@ -32,6 +32,7 @@
  import org.red5.server.api.IScope;
  import org.red5.server.api.IScopeHandler;
  import org.red5.server.api.IServer;
+import org.red5.server.api.Red5;
  import org.red5.server.api.ScopeUtils;
  import org.red5.server.api.IConnection.Encoding;
  import org.red5.server.api.service.IPendingServiceCall;
@@ -306,7 +307,7 @@
  											IPendingServiceCall pc = (IPendingServiceCall) call;
  											//send fmsver and capabilities
  									    	StatusObject result = getStatus(NC_CONNECT_SUCCESS);
-									    	result.setAdditional("fmsVer", "RED5/0,7,1,0");
+									    	result.setAdditional("fmsVer", Red5.getFMSVersion());
  											result.setAdditional("capabilities", Integer.valueOf(31));
  									    	pc.setResult(result);
  										}

Modified:  
java/server/trunk/src/org/red5/server/net/rtmp/codec/RTMPProtocolDecoder.java
==============================================================================
---  
java/server/trunk/src/org/red5/server/net/rtmp/codec/RTMPProtocolDecoder.java	 
(original)
+++  
java/server/trunk/src/org/red5/server/net/rtmp/codec/RTMPProtocolDecoder.java	 
Wed Sep 24 22:51:37 2008
@@ -530,10 +530,11 @@
  				message = decodeInvoke(in, rtmp);
  				break;
  			case TYPE_NOTIFY:
-				if (header.getStreamId() == 0)
+				if (header.getStreamId() == 0) {
  					message = decodeNotify(in, header, rtmp);
-				else
+				} else {
  					message = decodeStreamMetadata(in);
+				}
  				break;
  			case TYPE_PING:
  				message = decodePing(in);
@@ -770,11 +771,13 @@
  	private boolean isStreamCommand(String action) {
  		return (ACTION_CREATE_STREAM.equals(action)
  				|| ACTION_DELETE_STREAM.equals(action)
-				|| ACTION_PUBLISH.equals(action) || ACTION_PLAY.equals(action)
-				|| ACTION_SEEK.equals(action) || ACTION_PAUSE.equals(action)
+				|| ACTION_PUBLISH.equals(action)
+				|| ACTION_PLAY.equals(action)
+				|| ACTION_SEEK.equals(action)
+				|| ACTION_PAUSE.equals(action)
  				|| ACTION_CLOSE_STREAM.equals(action)
-				|| ACTION_RECEIVE_VIDEO.equals(action) || ACTION_RECEIVE_AUDIO
-				.equals(action));
+				|| ACTION_RECEIVE_VIDEO.equals(action)
+				|| ACTION_RECEIVE_AUDIO.equals(action));
  	}

  	/**

Modified: java/server/trunk/src/org/red5/server/net/rtmp/event/Ping.java
==============================================================================
--- java/server/trunk/src/org/red5/server/net/rtmp/event/Ping.java	 
(original)
+++ java/server/trunk/src/org/red5/server/net/rtmp/event/Ping.java	Wed Sep  
24 22:51:37 2008
@@ -108,6 +108,14 @@
  		this.value3 = value3;
  		this.value4 = value4;
  	}
+	
+	public Ping(Ping in) {
+		super(Type.SYSTEM);
+		this.value1 = in.getValue1();
+		this.value2 = in.getValue2();
+		this.value3 = in.getValue3();
+		this.value4 = in.getValue4();
+	}

  	/** {@inheritDoc} */
      @Override



More information about the Red5devs mailing list