[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