[Red5commits] [1942] merged current trunkadded an audio only flv

pgregoire luke at codegent.com
Wed May 2 18:30:18 EDT 2007


merged current trunk
added an audio only flv


Timestamp: 05/02/07 17:27:27 EST (less than one hour ago) 
Change: 1942 
Author: pgregoire

Files (see diff or trac for details): 
java/server/branches/paul_jmx/.classpath
java/server/branches/paul_jmx/conf/red5-core.xml
java/server/branches/paul_jmx/conf/red5.properties
java/server/branches/paul_jmx/conf/war/red5-core.xml
java/server/branches/paul_jmx/conf/war/red5.properties
java/server/branches/paul_jmx/lib/asm-commons-2.2.3.jar
java/server/branches/paul_jmx/lib/java5/java5.properties
java/server/branches/paul_jmx/lib/java6.properties
java/server/branches/paul_jmx/lib/library.properties
java/server/branches/paul_jmx/lib/mina-core-1.0.1.jar
java/server/branches/paul_jmx/lib/mina-core-1.1.0.jar
java/server/branches/paul_jmx/lib/mina-filter-compression-1.0.1.jar
java/server/branches/paul_jmx/lib/mina-filter-ssl-1.0.1.jar
java/server/branches/paul_jmx/lib/mina-filter-ssl-1.1.0.jar
java/server/branches/paul_jmx/lib/mina-integration-spring-1.1.0.jar
java/server/branches/paul_jmx/lib/script.properties
java/server/branches/paul_jmx/src/org/red5/io/utils/ByteBufferUtil.java
java/server/branches/paul_jmx/src/org/red5/server/Client.java
java/server/branches/paul_jmx/src/org/red5/server/ClientRegistryMBean.java
java/server/branches/paul_jmx/src/org/red5/server/LoaderMBean.java
java/server/branches/paul_jmx/src/org/red5/server/Scope.java
java/server/branches/paul_jmx/src/org/red5/server/Server.java
java/server/branches/paul_jmx/src/org/red5/server/api/persistence/IPersistenceStore.java
java/server/branches/paul_jmx/src/org/red5/server/messaging/IMessageOutput.java
java/server/branches/paul_jmx/src/org/red5/server/messaging/InMemoryPushPushPipe.java
java/server/branches/paul_jmx/src/org/red5/server/net/rtmp/RTMPMinaTransport.java
java/server/branches/paul_jmx/src/org/red5/server/net/servlet/ServletConnection.java
java/server/branches/paul_jmx/src/org/red5/server/persistence/FilePersistence.java
java/server/branches/paul_jmx/src/org/red5/server/persistence/RamPersistence.java
java/server/branches/paul_jmx/src/org/red5/server/stream/BroadcastScope.java
java/server/branches/paul_jmx/src/org/red5/server/stream/ClientBroadcastStream.java
java/server/branches/paul_jmx/src/org/red5/server/stream/PlaylistSubscriberStream.java
java/server/branches/paul_jmx/src/org/red5/server/stream/ProviderService.java
java/server/branches/paul_jmx/src/org/red5/server/stream/ServerStream.java
java/server/branches/paul_jmx/webapps/oflaDemo/streams/SB_redband.flv
java/server/branches/paul_jmx/webapps/oflaDemo/streams/Thunderhorse.flv


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

Index: /java/server/branches/paul_jmx/.classpath
===================================================================
--- /java/server/branches/paul_jmx/.classpath (revision 1937)
+++ /java/server/branches/paul_jmx/.classpath (revision 1942)
@@ -49,8 +49,4 @@
 	<classpathentry kind="lib" path="lib/groovy-1.0.jar"/>
 	<classpathentry kind="lib" path="lib/jta.jar"/>
-	<classpathentry kind="lib" path="lib/mina-core-1.0.1.jar"/>
-	<classpathentry kind="lib" path="lib/mina-filter-compression-1.0.1.jar"/>
-	<classpathentry kind="lib" path="lib/mina-filter-ssl-1.0.1.jar"/>
-	<classpathentry kind="lib" path="lib/mina-integration-spring-1.0.1.jar"/>
 	<classpathentry kind="lib" path="lib/tomcat-coyote-6.0.10.jar"/>
 	<classpathentry kind="lib" path="lib/tomcat-juli-6.0.10.jar"/>
@@ -68,4 +64,7 @@
 	<classpathentry kind="lib" path="lib/annotations-api.jar"/>
 	<classpathentry kind="lib" path="lib/jmxtools.jar"/>
+	<classpathentry kind="lib" path="lib/mina-integration-spring-1.1.0.jar"/>
+	<classpathentry kind="lib" path="lib/mina-filter-ssl-1.1.0.jar"/>
+	<classpathentry kind="lib" path="lib/mina-core-1.1.0.jar"/>
 	<classpathentry kind="output" path="bin"/>
 </classpath>
Index: /java/server/branches/paul_jmx/conf/red5-core.xml
===================================================================
--- /java/server/branches/paul_jmx/conf/red5-core.xml (revision 1927)
+++ /java/server/branches/paul_jmx/conf/red5-core.xml (revision 1942)
@@ -23,71 +23,6 @@
 		<property name="location" value="classpath:/red5.properties" />
 	</bean>
-	
-    <bean id="threadExecutor"
-        class="org.apache.mina.integration.spring.ThreadPoolExecutorFactoryBean">
-        <!-- use configured thread count as core pool size -->
-        <property name="corePoolSize" value="${rtmp.threadcount}" />
-        <!-- use a SynchronousQueue to handle requests to the threads -->
-        <property name="queueCapacity" value="0" />
-    </bean>
-
-	<bean id="filterChainBuilder" 
-        class="org.apache.mina.integration.spring.DefaultIoFilterChainBuilderFactoryBean">
-		<property name="filters">
-	    	<list>
-				<!-- mina 1.0 with java5 executor class -->
-				<bean class="org.red5.io.filter.ExecutorFilter">
-					<!-- int corePoolSize, int maximumPoolSize, long keepAliveTime (seconds) -->
-					<constructor-arg index="0" value="16" />
-					<constructor-arg index="1" value="128" />
-					<constructor-arg index="2" value="60" />
-				</bean>
-			</list>
-		</property>
-	</bean>
-    
-    <bean id="socketAcceptor" class="org.apache.mina.integration.spring.IoAcceptorFactoryBean">
-      <property name="target">
-        <bean class="org.apache.mina.transport.socket.nio.SocketAcceptor">
-            <constructor-arg value="${rtmp.threadcount}" />
-            <constructor-arg><ref bean="threadExecutor"/></constructor-arg>
-        </bean>
-      </property>
-      <property name="bindings">
-        <list>
-         <!-- RTMP -->
-         <bean class="org.apache.mina.integration.spring.Binding">
-           <property name="address" value="${rtmp.host_port}"/>
-           <property name="handler" ref="rtmpMinaIoHandler"/>
-           <property name="serviceConfig">
-             <bean class="org.apache.mina.transport.socket.nio.SocketAcceptorConfig">
-               <property name="filterChainBuilder" ref="filterChainBuilder"/>
-               <property name="reuseAddress" value="true"/>
-               <property name="sessionConfig.receiveBufferSize" value="65536" /><!-- 64k -->
-               <property name="sessionConfig.sendBufferSize" value="271360" /><!-- 256k -->
-               <property name="sessionConfig.tcpNoDelay" value="true" />
-               <property name="sessionConfig.reuseAddress" value="true"/>
-             </bean>
-           </property>
-         </bean>
-         
-         <!-- DEBUG PROXY -->
-         <bean class="org.apache.mina.integration.spring.Binding">
-           <property name="address" value="${debug_proxy.host_port}"/>
-           <property name="handler" ref="debugProxyIoHandler"/>
-           <property name="serviceConfig">
-             <bean class="org.apache.mina.transport.socket.nio.SocketAcceptorConfig">
-               <property name="filterChainBuilder" ref="filterChainBuilder"/>
-               <property name="reuseAddress" value="true"/>
-               <property name="sessionConfig.reuseAddress" value="true"/>
-             </bean>
-           </property>
-        </bean>
-       
-       </list>
-      </property>
-    </bean>
-   
-	<!-- RTMPHandler -->
+	   
+	<!-- RTMP Handler -->
 	<bean id="rtmpHandler"
 		class="org.red5.server.net.rtmp.RTMPHandler">
@@ -96,4 +31,5 @@
 	</bean>
 	
+	<!-- RTMP Mina IO Handler -->
 	<bean id="rtmpMinaIoHandler"
 		class="org.red5.server.net.rtmp.RTMPMinaIoHandler">
@@ -102,4 +38,24 @@
 	</bean>
 	
+	<!-- RTMP Mina Transport -->
+	<bean id="rtmpTransport" class="org.red5.server.net.rtmp.RTMPMinaTransport" init-method="start" destroy-method="stop">
+		<property name="ioHandler" ref="rtmpMinaIoHandler" />
+		<property name="address" value="${rtmp.host}" />
+		<property name="port" value="${rtmp.port}" />
+		<property name="receiveBufferSize" value="${rtmp.receive_buffer_size}" />
+		<property name="sendBufferSize" value="${rtmp.send_buffer_size}" />
+		<property name="eventThreads" value="${rtmp.event_threads}" />
+	</bean>
+	
+	<!-- RTMP Mina Connection -->
+	<bean id="rtmpMinaConnection" scope="prototype"
+		class="org.red5.server.net.rtmp.RTMPMinaConnection">
+		<!-- Ping clients every X ms. Set to 0 to disable ghost detection code. -->
+		<property name="pingInterval" value="${rtmp.ping_interval}" />
+		<!-- Disconnect client after X ms of not responding. -->
+		<property name="maxInactivity" value="${rtmp.max_inactivity}" />
+	</bean>
+	
+	<!-- RTMPT Handler -->
 	<bean id="rtmptHandler"
 		class="org.red5.server.net.rtmpt.RTMPTHandler" autowire="byType">
@@ -107,22 +63,14 @@
 	</bean>
 	
-	<bean id="rtmpMinaConnection" scope="prototype"
-		class="org.red5.server.net.rtmp.RTMPMinaConnection">
-		<!-- Ping clients every X ms. Set to 0 to disable ghost detection code. -->
-		<property name="pingInterval" value="5000" />
-		<!-- Disconnect client after X ms of not responding. -->
-		<property name="maxInactivity" value="60000" />
-	</bean>
-	
+	<!-- RTMPT Connection -->
 	<bean id="rtmptConnection" scope="prototype"
 		class="org.red5.server.net.rtmpt.RTMPTConnection">
 		<!-- Ping clients every X ms. Set to 0 to disable ghost detection code. -->
-		<property name="pingInterval" value="5000" />
+		<property name="pingInterval" value="${rtmp.ping_interval}" />
 		<!-- Disconnect client after X ms of not responding. -->
-		<property name="maxInactivity" value="60000" />
+		<property name="maxInactivity" value="${rtmp.max_inactivity}" />
 	</bean>
 	
-	<!-- Jetty Container -->
-
+	<!-- Jetty RTMPT Container -->
 	<bean id="rtmpt.server"
 		class="org.red5.server.net.rtmpt.RTMPTLoader" init-method="init"
@@ -206,4 +154,5 @@
 		</bean>
 	-->
+	<!-- Enable when you need it. 
 	<bean id="debugProxyIoHandler"
 		class="org.red5.server.net.proxy.DebugProxyHandler">
@@ -212,4 +161,5 @@
 		<property name="dumpTo" value="./webapps/dump/" />
 	</bean>
+	-->
 </beans>
 
Index: /java/server/branches/paul_jmx/conf/war/red5-core.xml
===================================================================
--- /java/server/branches/paul_jmx/conf/war/red5-core.xml (revision 1927)
+++ /java/server/branches/paul_jmx/conf/war/red5-core.xml (revision 1942)
@@ -24,54 +24,6 @@
 	</bean>
 
-    <bean id="threadExecutor"
-        class="org.apache.mina.integration.spring.ThreadPoolExecutorFactoryBean">
-        <!-- use configured thread count as core pool size -->
-        <property name="corePoolSize" value="${rtmp.threadcount}" />
-        <!-- use a SynchronousQueue to handle requests to the threads -->
-        <property name="queueCapacity" value="0" />
-    </bean>
-
-	<bean id="filterChainBuilder" 
-        class="org.apache.mina.integration.spring.DefaultIoFilterChainBuilderFactoryBean">
-		<property name="filters">
-	    	<list>
-				<!-- mina 1.0 with java5 executor class -->
-				<bean class="org.red5.io.filter.ExecutorFilter">
-					<!-- int corePoolSize, int maximumPoolSize, long keepAliveTime (seconds) -->
-					<constructor-arg index="0" value="16" />
-					<constructor-arg index="1" value="128" />
-					<constructor-arg index="2" value="60" />
-				</bean>
-			</list>
-		</property>
-	</bean>
-    
-    <bean id="socketAcceptor" class="org.apache.mina.integration.spring.IoAcceptorFactoryBean">
-      <property name="target">
-        <bean class="org.apache.mina.transport.socket.nio.SocketAcceptor">
-            <constructor-arg value="${rtmp.threadcount}" />
-            <constructor-arg><ref bean="threadExecutor"/></constructor-arg>
-        </bean>
-      </property>
-      <property name="bindings">
-        <list>
-         <!-- RTMP -->
-         <bean class="org.apache.mina.integration.spring.Binding">
-           <property name="address" value="${rtmp.host_port}"/>
-           <property name="handler" ref="rtmpMinaIoHandler"/>
-           <property name="serviceConfig">
-             <bean class="org.apache.mina.transport.socket.nio.SocketAcceptorConfig">
-               <property name="filterChainBuilder" ref="filterChainBuilder"/>
-               <property name="reuseAddress" value="true"/>
-               <property name="sessionConfig.reuseAddress" value="true"/>
-             </bean>
-           </property>
-         </bean>
-       
-       </list>
-      </property>
-    </bean>
-   
-	<!-- RTMPHandler -->
+	   
+	<!-- RTMP Handler -->
 	<bean id="rtmpHandler"
 		class="org.red5.server.net.rtmp.RTMPHandler">
@@ -79,5 +31,6 @@
 		<property name="statusObjectService" ref="statusObjectService" />
 	</bean>
-
+	
+	<!-- RTMP Mina IO Handler -->
 	<bean id="rtmpMinaIoHandler"
 		class="org.red5.server.net.rtmp.RTMPMinaIoHandler">
@@ -85,18 +38,31 @@
 		<property name="codecFactory" ref="rtmpCodecFactory" />
 	</bean>
-
+	
+	<!-- RTMP Mina Transport -->
+	<bean id="rtmpTransport" class="org.red5.server.net.rtmp.RTMPMinaTransport" init-method="start" destroy-method="stop">
+		<property name="ioHandler" ref="rtmpMinaIoHandler" />
+		<property name="address" value="${rtmp.host}" />
+		<property name="port" value="${rtmp.port}" />
+		<property name="receiveBufferSize" value="${rtmp.receive_buffer_size}" />
+		<property name="sendBufferSize" value="${rtmp.send_buffer_size}" />
+		<property name="eventThreads" value="${rtmp.event_threads}" />
+	</bean>
+	
+	<!-- RTMP Mina Connection -->
+	<bean id="rtmpMinaConnection" scope="prototype"
+		class="org.red5.server.net.rtmp.RTMPMinaConnection">
+		<!-- Ping clients every X ms. Set to 0 to disable ghost detection code. -->
+		<property name="pingInterval" value="${rtmp.ping_interval}" />
+		<!-- Disconnect client after X ms of not responding. -->
+		<property name="maxInactivity" value="${rtmp.max_inactivity}" />
+	</bean>
+	
+	<!-- RTMPT Handler -->
 	<bean id="rtmptHandler"
 		class="org.red5.server.net.rtmpt.RTMPTHandler" autowire="byType">
 		<property name="codecFactory" ref="rtmpCodecFactory" />
 	</bean>
-
-	<bean id="rtmpMinaConnection" scope="prototype"
-		class="org.red5.server.net.rtmp.RTMPMinaConnection">
-		<!-- Ping clients every X ms. Set to 0 to disable ghost detection code. -->
-		<property name="pingInterval" value="5000" />
-		<!-- Disconnect client after X ms of not responding. -->
-		<property name="maxInactivity" value="60000" />
-	</bean>
-
+	
+	<!-- RTMPT Connection -->
 	<bean id="rtmptConnection" scope="prototype"
 		class="org.red5.server.net.rtmpt.RTMPTConnection">
Index: /java/server/branches/paul_jmx/conf/war/red5.properties
===================================================================
--- /java/server/branches/paul_jmx/conf/war/red5.properties (revision 1927)
+++ /java/server/branches/paul_jmx/conf/war/red5.properties (revision 1942)
@@ -1,11 +1,19 @@
-rtmp.host_port=0.0.0.0:1935
-rtmp.threadcount=4
-debug_proxy.host_port=0.0.0.0:1936
-proxy_forward.host_port=127.0.0.1:1935
-rtmps.host_port=127.0.0.1:1945
+# HTTP
 http.host=0.0.0.0
 http.port=5080
+# RTMP
+rtmp.host=0.0.0.0
+rtmp.port=1935
+rtmp.event_threads=16
+rtmp.send_buffer_size=271360
+rtmp.receive_buffer_size=65536
+rtmp.ping_interval=5000
+rtmp.max_inactivity=60000
+# RTMPT
 rtmpt.host=0.0.0.0
 rtmpt.port=8088
+rtmpt.ping_interval=5000
+rtmpt.max_inactivity=60000
+# WEBAPP
 webapp.contextPath=/
 webapp.virtualHosts=*,localhost, localhost:5080, 127.0.0.1:5080
Index: /java/server/branches/paul_jmx/conf/red5.properties
===================================================================
--- /java/server/branches/paul_jmx/conf/red5.properties (revision 1927)
+++ /java/server/branches/paul_jmx/conf/red5.properties (revision 1942)
@@ -1,9 +1,16 @@
-rtmp.host_port = 0.0.0.0:1935
-rtmp.threadcount = 4
-debug_proxy.host_port = 0.0.0.0:1936
-proxy_forward.host_port = 127.0.0.1:1935
-rtmps.host_port = 127.0.0.1:1945
+# HTTP
 http.host=0.0.0.0
 http.port=5080
+# RTMP
+rtmp.host=0.0.0.0
+rtmp.port=1935
+rtmp.event_threads=16
+rtmp.send_buffer_size=271360
+rtmp.receive_buffer_size=65536
+rtmp.ping_interval=5000
+rtmp.max_inactivity=60000
+# RTMPT
 rtmpt.host=0.0.0.0
 rtmpt.port=8088
+rtmpt.ping_interval=5000
+rtmpt.max_inactivity=60000
Index: /java/server/branches/paul_jmx/lib/library.properties
===================================================================
--- /java/server/branches/paul_jmx/lib/library.properties (revision 1927)
+++ /java/server/branches/paul_jmx/lib/library.properties (revision 1942)
@@ -55,2 +55,7 @@
 activation-1.1.jar
 jmxtools.jar
+# Mina 
+mina-core-1.1.0.jar
+mina-filter-ssl-1.1.0.jar
+mina-integration-spring-1.1.0.jar
+
Index: /java/server/branches/paul_jmx/lib/java5/java5.properties
===================================================================
--- /java/server/branches/paul_jmx/lib/java5/java5.properties (revision 1927)
+++ /java/server/branches/paul_jmx/lib/java5/java5.properties (revision 1942)
@@ -3,10 +3,10 @@
 #
 # IO
-backport-util-concurrent.jar
-mina-core-1.0.1.jar
-mina-filter-compression-1.0.1.jar
-mina-filter-ssl-1.0.1.jar
-mina-integration-spring-1.0.1.jar
-mina-java5-1.0.1.jar
+#backport-util-concurrent.jar
+#mina-core-1.0.1.jar
+#mina-filter-compression-1.0.1.jar
+#mina-filter-ssl-1.0.1.jar
+#mina-integration-spring-1.0.1.jar
+#mina-java5-1.0.1.jar
 # Scripting - required special jars
 js.jar
Index: /java/server/branches/paul_jmx/lib/script.properties
===================================================================
--- /java/server/branches/paul_jmx/lib/script.properties (revision 1927)
+++ /java/server/branches/paul_jmx/lib/script.properties (revision 1942)
@@ -11,4 +11,5 @@
 # Scripting
 asm-2.2.3.jar
+asm-commons-2.2.3.jar
 antlr-2.7.6.jar
 bsh-2.0b4.jar
Index: /java/server/branches/paul_jmx/lib/java6.properties
===================================================================
--- /java/server/branches/paul_jmx/lib/java6.properties (revision 1927)
+++ /java/server/branches/paul_jmx/lib/java6.properties (revision 1942)
@@ -3,6 +3,3 @@
 #
 # IO
-mina-core-1.0.1.jar
-mina-filter-compression-1.0.1.jar
-mina-filter-ssl-1.0.1.jar
-mina-integration-spring-1.0.1.jar
+
Index: /java/server/branches/paul_jmx/src/org/red5/server/persistence/FilePersistence.java
===================================================================
--- /java/server/branches/paul_jmx/src/org/red5/server/persistence/FilePersistence.java (revision 1927)
+++ /java/server/branches/paul_jmx/src/org/red5/server/persistence/FilePersistence.java (revision 1942)
@@ -423,8 +423,5 @@
     @Override
 	public boolean remove(String name) {
-		if (!super.remove(name)) {
-			return false;
-		}
-
+		super.remove(name);
 		String filename = path + '/' + name + extension;
 		Resource resFile = resources.getResource(filename);
Index: /java/server/branches/paul_jmx/src/org/red5/server/persistence/RamPersistence.java
===================================================================
--- /java/server/branches/paul_jmx/src/org/red5/server/persistence/RamPersistence.java (revision 1927)
+++ /java/server/branches/paul_jmx/src/org/red5/server/persistence/RamPersistence.java (revision 1942)
@@ -20,7 +20,8 @@
  */
 
-import java.util.HashMap;
-import java.util.Iterator;
+import java.util.Collection;
 import java.util.Map;
+import java.util.Set;
+import java.util.concurrent.ConcurrentHashMap;
 
 import org.red5.server.api.IScope;
@@ -46,5 +47,5 @@
      * Map for persistable objects
      */
-    protected Map<String, IPersistable> objects = new HashMap<String, IPersistable>();
+    protected Map<String, IPersistable> objects = new ConcurrentHashMap<String, IPersistable>();
 
     /**
@@ -128,5 +129,5 @@
 
 	/** {@inheritDoc} */
-    public synchronized boolean save(IPersistable object) {
+    public boolean save(IPersistable object) {
         final String key = getObjectId(object);
         
@@ -137,5 +138,5 @@
 
 	/** {@inheritDoc} */
-    public synchronized IPersistable load(String name) {
+    public IPersistable load(String name) {
 		return objects.get(name);
 	}
@@ -147,10 +148,11 @@
 
 	/** {@inheritDoc} */
-    public synchronized boolean remove(IPersistable object) {
+    public boolean remove(IPersistable object) {
 		return remove(getObjectId(object));
 	}
 
 	/** {@inheritDoc} */
-    public synchronized boolean remove(String name) {
+    public boolean remove(String name) {
+    	synchronized (objects) {
 		if (!objects.containsKey(name)) {
 			return false;
@@ -159,15 +161,16 @@
 		IPersistable object = objects.remove(name);
 		object.setPersistent(false);
+    	}
 		return true;
 	}
 
 	/** {@inheritDoc} */
-    public Iterator<String> getObjectNames() {
-		return objects.keySet().iterator();
+    public Set<String> getObjectNames() {
+		return objects.keySet();
 	}
 
 	/** {@inheritDoc} */
-    public Iterator<IPersistable> getObjects() {
-		return objects.values().iterator();
+    public Collection<IPersistable> getObjects() {
+		return objects.values();
 	}
 }
Index: /java/server/branches/paul_jmx/src/org/red5/server/ClientRegistryMBean.java
===================================================================
--- /java/server/branches/paul_jmx/src/org/red5/server/ClientRegistryMBean.java (revision 1927)
+++ /java/server/branches/paul_jmx/src/org/red5/server/ClientRegistryMBean.java (revision 1942)
@@ -39,6 +39,4 @@
 	public IClient lookupClient(String id) throws ClientNotFoundException;
 
-	public IClient newClient(Object[] params);
-
 	public List<Client> getClientList();
 
Index: /java/server/branches/paul_jmx/src/org/red5/server/stream/ServerStream.java
===================================================================
--- /java/server/branches/paul_jmx/src/org/red5/server/stream/ServerStream.java (revision 1937)
+++ /java/server/branches/paul_jmx/src/org/red5/server/stream/ServerStream.java (revision 1942)
@@ -334,5 +334,5 @@
 	/** {@inheritDoc} */
 	public void saveAs(String name, boolean isAppend)
-			throws ResourceNotFoundException, ResourceExistException {
+			throws IOException, ResourceNotFoundException, ResourceExistException {
 		try {
 			IScope scope = getScope();
@@ -341,6 +341,5 @@
 							DefaultStreamFilenameGenerator.class);
 
-			String filename = generator.generateFilename(scope, name, ".flv",
-					GenerationType.RECORD);
+		String filename = generator.generateFilename(scope, name, ".flv", GenerationType.RECORD);
 			Resource res = scope.getContext().getResource(filename);
 			if (!isAppend) {
@@ -349,5 +348,6 @@
 					// When "live" or "record" is used,
 					// any previously recorded stream with the same stream URI is deleted.
-					res.getFile().delete();
+				if (!res.getFile().delete())
+					throw new IOException("file could not be deleted");
 				}
 			} else {
@@ -491,5 +491,5 @@
 
 	/** {@inheritDoc} */
-	public void pushMessage(IPipe pipe, IMessage message) {
+    public void pushMessage(IPipe pipe, IMessage message) throws IOException {
 		pushMessage(message);
 	}
@@ -590,5 +590,5 @@
 	 * @param message     Message
 	 */
-	private void pushMessage(IMessage message) {
+    private void pushMessage(IMessage message) throws IOException {
 		msgOut.pushMessage(message);
 		recordPipe.pushMessage(message);
@@ -600,5 +600,9 @@
 	private void sendResetMessage() {
 		// Send new reset message
+    	try {
 		pushMessage(new ResetMessage());
+    	} catch (IOException err) {
+    		log.error("Error while sending reset message.", err);
+    	}
 	}
 
@@ -673,5 +677,9 @@
 					}
 					vodJobName = null;
+					try {
 					pushMessage(nextRTMPMessage);
+			    	} catch (IOException err) {
+			    		log.error("Error while sending message.", err);
+			    	}
 					nextRTMPMessage.getBody().release();
 					long start = currentItem.getStart();
Index: /java/server/branches/paul_jmx/src/org/red5/server/stream/BroadcastScope.java
===================================================================
--- /java/server/branches/paul_jmx/src/org/red5/server/stream/BroadcastScope.java (revision 1927)
+++ /java/server/branches/paul_jmx/src/org/red5/server/stream/BroadcastScope.java (revision 1942)
@@ -20,4 +20,5 @@
  */
 
+import java.io.IOException;
 import java.util.List;
 import java.util.Map;
@@ -155,6 +156,7 @@
 	 * the time.
 	 * @param message Message to be pushed.
+	 * @throws IOException If message could not be pushed.
 	 */
-	public void pushMessage(IMessage message) {
+	public void pushMessage(IMessage message) throws IOException {
 		pipe.pushMessage(message);
 	}
Index: /java/server/branches/paul_jmx/src/org/red5/server/stream/PlaylistSubscriberStream.java
===================================================================
--- /java/server/branches/paul_jmx/src/org/red5/server/stream/PlaylistSubscriberStream.java (revision 1927)
+++ /java/server/branches/paul_jmx/src/org/red5/server/stream/PlaylistSubscriberStream.java (revision 1942)
@@ -46,4 +46,5 @@
 import org.red5.server.api.stream.IVideoStreamCodec;
 import org.red5.server.api.stream.OperationNotSupportedException;
+import org.red5.server.messaging.AbstractMessage;
 import org.red5.server.messaging.IFilter;
 import org.red5.server.messaging.IMessage;
@@ -1106,5 +1107,5 @@
 								&& ((VideoData) body).getFrameType() == FrameType.KEYFRAME) {
 							body.setTimestamp(seekPos);
-							msgOut.pushMessage(rtmpMessage);
+							doPushMessage(rtmpMessage);
 							rtmpMessage.getBody().release();
 							messageSent = true;
@@ -1135,5 +1136,5 @@
 				audioMessage.setBody(audio);
 				lastMessage = audio;
-				msgOut.pushMessage(audioMessage);
+				doPushMessage(audioMessage);
 			}
 			
@@ -1328,4 +1329,17 @@
 
         /**
+		 * Send message to output stream and handle exceptions.
+		 * 
+		 * @param message The message to send.
+		 */
+		private void doPushMessage(AbstractMessage message) {
+			try {
+				msgOut.pushMessage(message);
+			} catch (IOException err) {
+				log.error("Error while pushing message.", err);
+			}
+		}
+		
+        /**
          * Send RTMP message
          * @param message        RTMP message
@@ -1348,5 +1362,5 @@
 				bytesSent += ((IStreamData) lastMessage).getData().limit();
 			}
-			msgOut.pushMessage(message);
+			doPushMessage(message);
 		}
 
@@ -1361,5 +1375,5 @@
 			RTMPMessage ping1Msg = new RTMPMessage();
 			ping1Msg.setBody(ping1);
-			msgOut.pushMessage(ping1Msg);
+			doPushMessage(ping1Msg);
 		}
 
@@ -1375,5 +1389,5 @@
 				RTMPMessage ping1Msg = new RTMPMessage();
 				ping1Msg.setBody(ping1);
-				msgOut.pushMessage(ping1Msg);
+				doPushMessage(ping1Msg);
 			}
 
@@ -1384,8 +1398,8 @@
 			RTMPMessage ping2Msg = new RTMPMessage();
 			ping2Msg.setBody(ping2);
-			msgOut.pushMessage(ping2Msg);
+			doPushMessage(ping2Msg);
 
 			ResetMessage reset = new ResetMessage();
-			msgOut.pushMessage(reset);
+			doPushMessage(reset);
 		}
 
@@ -1404,5 +1418,5 @@
 			StatusMessage resetMsg = new StatusMessage();
 			resetMsg.setBody(reset);
-			msgOut.pushMessage(resetMsg);
+			doPushMessage(resetMsg);
 		}
 
@@ -1419,5 +1433,5 @@
 			StatusMessage startMsg = new StatusMessage();
 			startMsg.setBody(start);
-			msgOut.pushMessage(startMsg);
+			doPushMessage(startMsg);
 		}
 
@@ -1434,5 +1448,5 @@
 			StatusMessage stopMsg = new StatusMessage();
 			stopMsg.setBody(stop);
-			msgOut.pushMe

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