[Red5commits] [1608] org.red5.io and org.red5.server.net.rtmp.codec documented and revised a bit

mklishin luke at codegent.com
Wed Jan 24 11:06:02 EST 2007


org.red5.io and org.red5.server.net.rtmp.codec documented and revised a bit


Timestamp: 01/02/07 10:22:39 EST (3 weeks ago) 
Change: 1608 
Author: mklishin

Files (see diff or trac for details): 
java/server/trunk/src/org/red5/io/IStreamableFileFactory.java
java/server/trunk/src/org/red5/io/IStreamableFileService.java
java/server/trunk/src/org/red5/io/ITagWriter.java
java/server/trunk/src/org/red5/io/IoConstants.java
java/server/trunk/src/org/red5/io/StreamableFileFactory.java
java/server/trunk/src/org/red5/io/amf/AMF.java
java/server/trunk/src/org/red5/io/amf/Input.java
java/server/trunk/src/org/red5/io/amf/Output.java
java/server/trunk/src/org/red5/io/amf3/AMF3.java
java/server/trunk/src/org/red5/io/amf3/Input.java
java/server/trunk/src/org/red5/io/filter/ExecutorFilter.java
java/server/trunk/src/org/red5/io/flv/FLVHeader.java
java/server/trunk/src/org/red5/io/flv/IFLV.java
java/server/trunk/src/org/red5/io/flv/IFLVService.java
java/server/trunk/src/org/red5/io/flv/IKeyFrameDataAnalyzer.java
java/server/trunk/src/org/red5/io/flv/impl/FLVReader.java
java/server/trunk/src/org/red5/io/flv/impl/FLVService.java
java/server/trunk/src/org/red5/io/flv/impl/FLVWriter.java
java/server/trunk/src/org/red5/io/flv/impl/Tag.java
java/server/trunk/src/org/red5/io/flv/meta/ICueType.java
java/server/trunk/src/org/red5/io/flv/meta/IMetaCue.java
java/server/trunk/src/org/red5/io/flv/meta/IMetaData.java
java/server/trunk/src/org/red5/io/flv/meta/IMetaService.java
java/server/trunk/src/org/red5/io/flv/meta/IResolver.java
java/server/trunk/src/org/red5/io/flv/meta/MetaData.java
java/server/trunk/src/org/red5/io/flv/meta/MetaService.java
java/server/trunk/src/org/red5/io/flv/meta/Resolver.java
java/server/trunk/src/org/red5/io/mp3/IMP3.java
java/server/trunk/src/org/red5/io/mp3/IMP3Service.java
java/server/trunk/src/org/red5/io/mp3/impl/MP3.java
java/server/trunk/src/org/red5/io/mp3/impl/MP3Header.java
java/server/trunk/src/org/red5/io/mp3/impl/MP3Service.java
java/server/trunk/src/org/red5/io/object/BaseInput.java
java/server/trunk/src/org/red5/io/object/BaseOutput.java
java/server/trunk/src/org/red5/io/object/DataTypes.java
java/server/trunk/src/org/red5/io/object/Input.java
java/server/trunk/src/org/red5/io/object/Output.java
java/server/trunk/src/org/red5/io/object/RecordSet.java
java/server/trunk/src/org/red5/io/object/RecordSetPage.java
java/server/trunk/src/org/red5/io/object/Serializer.java
java/server/trunk/src/org/red5/io/object/SerializerOpts.java
java/server/trunk/src/org/red5/server/net/rtmp/codec/RTMPProtocolDecoder.java
java/server/trunk/src/org/red5/server/net/rtmp/codec/RTMPProtocolEncoder.java


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

Index: /java/server/trunk/src/org/red5/server/net/rtmp/codec/RTMPProtocolEncoder.java
===================================================================
--- /java/server/trunk/src/org/red5/server/net/rtmp/codec/RTMPProtocolEncoder.java (revision 1597)
+++ /java/server/trunk/src/org/red5/server/net/rtmp/codec/RTMPProtocolEncoder.java (revision 1608)
@@ -20,8 +20,4 @@
  */
 
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
@@ -31,6 +27,6 @@
 import org.red5.io.utils.BufferUtils;
 import org.red5.server.api.IConnection;
+import org.red5.server.api.IConnection.Encoding;
 import org.red5.server.api.Red5;
-import org.red5.server.api.IConnection.Encoding;
 import org.red5.server.api.service.IPendingServiceCall;
 import org.red5.server.api.service.IServiceCall;
@@ -38,16 +34,5 @@
 import org.red5.server.net.protocol.SimpleProtocolEncoder;
 import org.red5.server.net.rtmp.RTMPUtils;
-import org.red5.server.net.rtmp.event.AudioData;
-import org.red5.server.net.rtmp.event.BytesRead;
-import org.red5.server.net.rtmp.event.ChunkSize;
-import org.red5.server.net.rtmp.event.ClientBW;
-import org.red5.server.net.rtmp.event.FlexMessage;
-import org.red5.server.net.rtmp.event.IRTMPEvent;
-import org.red5.server.net.rtmp.event.Invoke;
-import org.red5.server.net.rtmp.event.Notify;
-import org.red5.server.net.rtmp.event.Ping;
-import org.red5.server.net.rtmp.event.ServerBW;
-import org.red5.server.net.rtmp.event.Unknown;
-import org.red5.server.net.rtmp.event.VideoData;
+import org.red5.server.net.rtmp.event.*;
 import org.red5.server.net.rtmp.message.Constants;
 import org.red5.server.net.rtmp.message.Header;
@@ -58,17 +43,37 @@
 import org.red5.server.so.ISharedObjectMessage;
 
+import java.util.List;
+import java.util.Map;
+
+/**
+ * RTMP protocol encoder encodes RTMP messages and packets to byte buffers.
+ */
 public class RTMPProtocolEncoder implements SimpleProtocolEncoder, Constants,
 		IEventEncoder {
 
-	protected static Log log = LogFactory.getLog(RTMPProtocolEncoder.class
+    /**
+     * Logger
+     */
+    protected static Log log = LogFactory.getLog(RTMPProtocolEncoder.class
 			.getName());
 
-	protected static Log ioLog = LogFactory.getLog(RTMPProtocolEncoder.class
+    /**
+     * I/O operations logger
+     */
+    protected static Log ioLog = LogFactory.getLog(RTMPProtocolEncoder.class
 			.getName()
 			+ ".out");
 
-	private Serializer serializer;
-	
-	private Output getOutput(ByteBuffer buffer) {
+    /**
+     * Serializer object
+     */
+    private Serializer serializer;
+
+    /**
+     * Creates output object from byte buffer
+     * @param buffer
+     * @return
+     */
+    private Output getOutput(ByteBuffer buffer) {
 		IConnection conn = Red5.getConnectionLocal();
 		if (conn.getEncoding() == Encoding.AMF3) {
@@ -95,5 +100,11 @@
 	}
 
-	public ByteBuffer encodePacket(RTMP rtmp, Packet packet) {
+    /**
+     * Encode packet
+     * @param rtmp        RTMP protocol state
+     * @param packet      RTMP packet
+     * @return            Encoded data
+     */
+    public ByteBuffer encodePacket(RTMP rtmp, Packet packet) {
 
 		final Header header = packet.getHeader();
@@ -120,6 +131,5 @@
 		header.setSize(data.limit());
 
-		final ByteBuffer headers = encodeHeader(header, rtmp
-				.getLastWriteHeader(channelId));
+		final ByteBuffer headers = encodeHeader(header, rtmp.getLastWriteHeader(channelId));
 
 		rtmp.setLastWriteHeader(channelId, header);
@@ -130,5 +140,5 @@
 				/ (float) chunkSize);
 		final int bufSize = header.getSize() + headers.limit()
-				+ (numChunks - 1 * 1);
+				+ (numChunks - 1);
 		final ByteBuffer out = ByteBuffer.allocate(bufSize);
 
@@ -155,5 +165,11 @@
 	}
 
-	public ByteBuffer encodeHeader(Header header, Header lastHeader) {
+    /**
+     * Encode RTMP header
+     * @param header      RTMP message header
+     * @param lastHeader  Previous header
+     * @return            Encoded header data
+     */
+    public ByteBuffer encodeHeader(Header header, Header lastHeader) {
 
 		byte headerType = HEADER_NEW;
@@ -204,5 +220,11 @@
 	}
 
-	public ByteBuffer encodeMessage(Header header, IRTMPEvent message) {
+    /**
+     * Encode message
+     * @param header      RTMP message header
+     * @param message     RTMP message (event)
+     * @return            Encoded message data
+     */
+    public ByteBuffer encodeMessage(Header header, IRTMPEvent message) {
 		switch (header.getDataType()) {
 			case TYPE_CHUNK_SIZE:
@@ -237,5 +259,10 @@
 	}
 
-	private ByteBuffer encodeServerBW(ServerBW serverBW) {
+    /**
+     * Encode server-side bandwidth event
+     * @param serverBW    Server-side bandwidth event
+     * @return            Encoded event data
+     */
+    private ByteBuffer encodeServerBW(ServerBW serverBW) {
 		final ByteBuffer out = ByteBuffer.allocate(4);
 		out.putInt(serverBW.getBandwidth());
@@ -243,5 +270,10 @@
 	}
 
-	private ByteBuffer encodeClientBW(ClientBW clientBW) {
+    /**
+     * Encode client-side bandwidth event
+     * @param clientBW    Client-side bandwidth event
+     * @return            Encoded event data
+     */
+    private ByteBuffer encodeClientBW(ClientBW clientBW) {
 		final ByteBuffer out = ByteBuffer.allocate(5);
 		out.putInt(clientBW.getBandwidth());
@@ -272,131 +304,126 @@
 		out.putInt(0);
 
-		int mark, len = 0;
-
-		final Iterator iter = so.getEvents().iterator();
-		while (iter.hasNext()) {
-
-			ISharedObjectEvent event = (ISharedObjectEvent) iter.next();
-			byte type = SharedObjectTypeMapping.toByte(event.getType());
-
-			switch (event.getType()) {
-				case SERVER_CONNECT:
-				case CLIENT_INITIAL_DATA:
-				case CLIENT_CLEAR_DATA:
-					out.put(type);
-					out.putInt(0);
-					break;
-
-				case SERVER_DELETE_ATTRIBUTE:
-				case CLIENT_DELETE_DATA:
-				case CLIENT_UPDATE_ATTRIBUTE:
-					out.put(type);
-					mark = out.position();
-					out.skip(4); // we will be back
-					output.putString(event.getKey());
-					len = out.position() - mark - 4;
-					out.putInt(mark, len);
-					break;
-
-				case SERVER_SET_ATTRIBUTE:
-				case CLIENT_UPDATE_DATA:
-					if (event.getKey() == null) {
-						// Update multiple attributes in one request
-						Map initialData = (Map) event.getValue();
-
-						Iterator keys = initialData.keySet().iterator();
-						while (keys.hasNext()) {
-
-							out.put(type);
-							mark = out.position();
-							out.skip(4); // we will be back
-
-							String key = (String) keys.next();
-							output.putString(key);
-							serializer.serialize(output, initialData.get(key));
-
-							len = out.position() - mark - 4;
-							out.putInt(mark, len);
-						}
-					} else {
-						out.put(type);
-						mark = out.position();
-						out.skip(4); // we will be back
-
-						output.putString(event.getKey());
-						serializer.serialize(output, event.getValue());
-
-						len = out.position() - mark - 4;
-						out.putInt(mark, len);
-					}
-					break;
-
-				case CLIENT_SEND_MESSAGE:
-				case SERVER_SEND_MESSAGE:
-					// Send method name and value
-					out.put(type);
-					mark = out.position();
-					out.skip(4);
-					// Serialize name of the handler to call...
-					serializer.serialize(output, event.getKey());
-					// ...and the arguments
-					for (Object arg : (List) event.getValue()) {
-						serializer.serialize(output, arg);
-					}
-					len = out.position() - mark - 4;
-					//log.debug(len);
-					out.putInt(mark, len);
-					//log.info(out.getHexDump());
-					break;
-
-				case CLIENT_STATUS:
-					out.put(type);
-					mark = out.position();
-					out.skip(4); // we will be back
-					output.putString(event.getKey());
-					output.putString((String) event.getValue());
-					len = out.position() - mark - 4;
-					out.putInt(mark, len);
-					break;
-
-				default:
-					//log.error("Unknown event " + event.getType());
-					// XXX: come back here, need to make this work in server or
-					// client mode
-					// talk to joachim about this part.
-					out.put(type);
-					mark = out.position();
-					//out.putInt(0);
-					out.skip(4); // we will be back
-					output.putString(event.getKey());
-					serializer.serialize(output, event.getValue());
-					len = out.position() - mark - 4;
-					out.putInt(mark, len);
-					break;
-
-			}
-		}
-		return out;
-	}
-
-	/** {@inheritDoc} */ /*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.red5.server.net.rtmp.codec.IEventEncoder#encodeNotify(org.red5.server.net.rtmp.event.Notify)
-	 */
+		int mark, len;
+
+        for (ISharedObjectEvent event1 : so.getEvents()) {
+
+            ISharedObjectEvent event = (ISharedObjectEvent) event1;
+            byte type = SharedObjectTypeMapping.toByte(event.getType());
+
+            switch (event.getType()) {
+                case SERVER_CONNECT:
+                case CLIENT_INITIAL_DATA:
+                case CLIENT_CLEAR_DATA:
+                    out.put(type);
+                    out.putInt(0);
+                    break;
+
+                case SERVER_DELETE_ATTRIBUTE:
+                case CLIENT_DELETE_DATA:
+                case CLIENT_UPDATE_ATTRIBUTE:
+                    out.put(type);
+                    mark = out.position();
+                    out.skip(4); // we will be back
+                    output.putString(event.getKey());
+                    len = out.position() - mark - 4;
+                    out.putInt(mark, len);
+                    break;
+
+                case SERVER_SET_ATTRIBUTE:
+                case CLIENT_UPDATE_DATA:
+                    if (event.getKey() == null) {
+                        // Update multiple attributes in one request
+                        Map initialData = (Map) event.getValue();
+
+                        for (Object o : initialData.keySet()) {
+
+                            out.put(type);
+                            mark = out.position();
+                            out.skip(4); // we will be back
+
+                            String key = (String) o;
+                            output.putString(key);
+                            serializer.serialize(output, initialData.get(key));
+
+                            len = out.position() - mark - 4;
+                            out.putInt(mark, len);
+                        }
+                    } else {
+                        out.put(type);
+                        mark = out.position();
+                        out.skip(4); // we will be back
+
+                        output.putString(event.getKey());
+                        serializer.serialize(output, event.getValue());
+
+                        len = out.position() - mark - 4;
+                        out.putInt(mark, len);
+                    }
+                    break;
+
+                case CLIENT_SEND_MESSAGE:
+                case SERVER_SEND_MESSAGE:
+                    // Send method name and value
+                    out.put(type);
+                    mark = out.position();
+                    out.skip(4);
+                    // Serialize name of the handler to call...
+                    serializer.serialize(output, event.getKey());
+                    // ...and the arguments
+                    for (Object arg : (List) event.getValue()) {
+                        serializer.serialize(output, arg);
+                    }
+                    len = out.position() - mark - 4;
+                    //log.debug(len);
+                    out.putInt(mark, len);
+                    //log.info(out.getHexDump());
+                    break;
+
+                case CLIENT_STATUS:
+                    out.put(type);
+                    mark = out.position();
+                    out.skip(4); // we will be back
+                    output.putString(event.getKey());
+                    output.putString((String) event.getValue());
+                    len = out.position() - mark - 4;
+                    out.putInt(mark, len);
+                    break;
+
+                default:
+                    //log.error("Unknown event " + event.getType());
+                    // XXX: come back here, need to make this work in server or
+                    // client mode
+                    // talk to joachim about this part.
+                    out.put(type);
+                    mark = out.position();
+                    //out.putInt(0);
+                    out.skip(4); // we will be back
+                    output.putString(event.getKey());
+                    serializer.serialize(output, event.getValue());
+                    len = out.position() - mark - 4;
+                    out.putInt(mark, len);
+                    break;
+
+            }
+        }
+        return out;
+	}
+
+	/** {@inheritDoc} */
 	public ByteBuffer encodeNotify(Notify notify) {
 		return encodeNotifyOrInvoke(notify);
 	}
 
-	/** {@inheritDoc} */ /*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.red5.server.net.rtmp.codec.IEventEncoder#encodeInvoke(org.red5.server.net.rtmp.event.Invoke)
-	 */
+	/** {@inheritDoc} */
 	public ByteBuffer encodeInvoke(Invoke invoke) {
 		return encodeNotifyOrInvoke(invoke);
 	}
 
-	protected ByteBuffer encodeNotifyOrInvoke(Notify invoke) {
+    /**
+     * Encode notification event
+     * @param invoke            Notification event
+     * @return                  Encoded event data
+     */
+    protected ByteBuffer encodeNotifyOrInvoke(Notify invoke) {
 		ByteBuffer out = ByteBuffer.allocate(1024);
 		out.setAutoExpand(true);
@@ -404,5 +431,10 @@
 		return out;
 	}
-	
+
+    /**
+     * Encode notification event and fill given byte buffer
+     * @param out               Byte buffer to fill
+     * @param invoke            Notification event
+     */
 	protected void encodeNotifyOrInvoke(ByteBuffer out, Notify invoke) {
 		// TODO: tidy up here
@@ -457,9 +489,5 @@
 	}
 
-	/** {@inheritDoc} */ /*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.red5.server.net.rtmp.codec.IEventEncoder#encodePing(org.red5.server.net.rtmp.event.Ping)
-	 */
+	/** {@inheritDoc} */
 	public ByteBuffer encodePing(Ping ping) {
 		int len = 6;
@@ -482,9 +510,5 @@
 	}
 
-	/** {@inheritDoc} */ /*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.red5.server.net.rtmp.codec.IEventEncoder#encodeStreamBytesRead(org.red5.server.net.rtmp.event.StreamBytesRead)
-	 */
+	/** {@inheritDoc} */
 	public ByteBuffer encodeBytesRead(BytesRead bytesRead) {
 		final ByteBuffer out = ByteBuffer.allocate(4);
@@ -493,18 +517,10 @@
 	}
 
-	/** {@inheritDoc} */ /*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.red5.server.net.rtmp.codec.IEventEncoder#encodeAudioData(org.red5.server.net.rtmp.event.AudioData)
-	 */
+	/** {@inheritDoc} */
 	public ByteBuffer encodeAudioData(AudioData audioData) {
 		return audioData.getData().asReadOnlyBuffer();
 	}
 
-	/** {@inheritDoc} */ /*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.red5.server.net.rtmp.codec.IEventEncoder#encodeVideoData(org.red5.server.net.rtmp.event.VideoData)
-	 */
+	/** {@inheritDoc} */
 	public ByteBuffer encodeVideoData(VideoData videoData) {
 		return videoData.getData().asReadOnlyBuffer();
@@ -521,7 +537,7 @@
 
 	/**
-     * Setter for property 'serializer'.
+     * Setter for serializer
      *
-     * @param serializer Value to set for property 'serializer'.
+     * @param serializer Serializer
      */
     public void setSerializer(org.red5.io.object.Serializer serializer) {
@@ -529,5 +545,10 @@
 	}
 
-	public ByteBuffer encodeFlexMessage(FlexMessage msg) {
+    /**
+     * Encodes Flex message event
+     * @param msg                Flex message event
+     * @return                   Encoded data
+     */
+    public ByteBuffer encodeFlexMessage(FlexMessage msg) {
 		ByteBuffer out = ByteBuffer.allocate(1024);
 		out.setAutoExpand(true);
Index: /java/server/trunk/src/org/red5/server/net/rtmp/codec/RTMPProtocolDecoder.java
===================================================================
--- /java/server/trunk/src/org/red5/server/net/rtmp/codec/RTMPProtocolDecoder.java (revision 1606)
+++ /java/server/trunk/src/org/red5/server/net/rtmp/codec/RTMPProtocolDecoder.java (revision 1608)
@@ -60,5 +60,5 @@
 
     /**
-     * Filesystem logger
+     * I/O logger
      */
     protected static Log ioLog = LogFactory.getLog(RTMPProtocolDecoder.class
Index: /java/server/trunk/src/org/red5/io/IoConstants.java
===================================================================
--- /java/server/trunk/src/org/red5/io/IoConstants.java (revision 1406)
+++ /java/server/trunk/src/org/red5/io/IoConstants.java (revision 1608)
@@ -25,59 +25,116 @@
  */
 public interface IoConstants {
-
+    /**
+     * Video data
+     */
 	public static final byte TYPE_VIDEO = 0x09;
-
+    /**
+     * Audio data
+     */
 	public static final byte TYPE_AUDIO = 0x08;
-
+    /**
+     * Metadata
+     */
 	public static final byte TYPE_METADATA = 0x12;
-
+    /**
+     * Mask sound type
+     */
 	public static final byte MASK_SOUND_TYPE = 0x01;
-
+    /**
+     * Mono mode
+     */
 	public static final byte FLAG_TYPE_MONO = 0x00;
-
+    /**
+     * Stereo mode
+     */
 	public static final byte FLAG_TYPE_STEREO = 0x01;
-
+    /**
+     * Mask sound size
+     */
 	public static final byte MASK_SOUND_SIZE = 0x02;
-
+    /**
+     * 8 bit flag size
+     */
 	public static final byte FLAG_SIZE_8_BIT = 0x00;
-
+    /**
+     * 16 bit flag size
+     */
 	public static final byte FLAG_SIZE_16_BIT = 0x01;
-
+    /**
+     * Mask sound rate
+     */
 	public static final byte MASK_SOUND_RATE = 0x0C;
-
+    /**
+     * 5.5 KHz rate flag
+     */
 	public static final byte FLAG_RATE_5_5_KHZ = 0x00;
-
+    /**
+     * 11 KHz rate flag
+     */
 	public static final byte FLAG_RATE_11_KHZ = 0x01;
-
+    /**
+     * 22 KHz rate flag
+     */
 	public static final byte FLAG_RATE_22_KHZ = 0x02;
-
+    /**
+     * 44 KHz rate flag
+     */
 	public static final byte FLAG_RATE_44_KHZ = 0x03;
-
+    /**
+     * Mask sound format (unsigned)
+     */
 	public static final byte MASK_SOUND_FORMAT = 0xF0 - 0xFF; // unsigned 
-
+    /**
+     * Raw data format flag
+     */
 	public static final byte FLAG_FORMAT_RAW = 0x00;
-
+    /**
+     * ADPCM format flag
+     */
 	public static final byte FLAG_FORMAT_ADPCM = 0x01;
-
+    /**
+     * MP3 format flag
+     */
 	public static final byte FLAG_FORMAT_MP3 = 0x02;
-
+    /**
+     * 8 KHz NellyMoser audio format flag
+     */
 	public static final byte FLAG_FORMAT_NELLYMOSER_8_KHZ = 0x05;
 
-	public static final byte FLAG_FORMAT_NELLYMOSER = 0x06;
-
+    /**
+     * NellyMoser-encoded audio format flag
+     */
+    public static final byte FLAG_FORMAT_NELLYMOSER = 0x06;
+    /**
+     * Mask video codec
+     */
 	public static final byte MASK_VIDEO_CODEC = 0x0F;
-
+    /**
+     * H263 codec flag
+     */
 	public static final byte FLAG_CODEC_H263 = 0x02;
-
+    /**
+     * Screen codec flag
+     */
 	public static final byte FLAG_CODEC_SCREEN = 0x03;
-
+    /**
+     * On2 VP6 codec flag
+     */
 	public static final byte FLAG_CODEC_VP6 = 0x04;
-
+    /**
+     * Video frametype flag
+     */
 	public static final byte MASK_VIDEO_FRAMETYPE = 0xF0 - 0xFF; // unsigned 
-
+    /**
+     * Keyframe type flag
+     */
 	public static final byte FLAG_FRAMETYPE_KEYFRAME = 0x01;
-
+    /**
+     * Interframe flag. Interframes are created from keyframes rather than independent image
+     */
 	public static final byte FLAG_FRAMETYPE_INTERFRAME = 0x02;
-
+    /**
+     * Disposable frame type flag
+     */
 	public static final byte FLAG_FRAMETYPE_DISPOSABLE = 0x03;
 
Index: /java/server/trunk/src/org/red5/io/filter/ExecutorFilter.java
===================================================================
--- /java/server/trunk/src/org/red5/io/filter/ExecutorFilter.java (revision 1606)
+++ /java/server/trunk/src/org/red5/io/filter/ExecutorFilter.java (revision 1608)
@@ -20,4 +20,9 @@
 package org.red5.io.filter;
 
+import org.apache.mina.common.*;
+import org.apache.mina.util.ByteBufferUtil;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
 import java.util.ArrayList;
 import java.util.List;
@@ -26,13 +31,4 @@
 import java.util.concurrent.ThreadPoolExecutor;
 import java.util.concurrent.TimeUnit;
-
-import org.apache.mina.common.IdleStatus;
-import org.apache.mina.common.IoFilterAdapter;
-import org.apache.mina.common.IoFilterChain;
-import org.apache.mina.common.IoSession;
-import org.apache.mina.common.ThreadModel;
-import org.apache.mina.util.ByteBufferUtil;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
 
 /**
@@ -54,5 +50,8 @@
 			.getLogger(ExecutorFilter.class.getName());
 
-	private final Executor executor;
+    /**
+     * Executes submitted runnable tasks
+     */
+    private final Executor executor;
 
 	/**
@@ -75,5 +74,11 @@
 	}
 
-	public ExecutorFilter(int corePoolSize, int maximumPoolSize, long keepAliveTime) {
+    /**
+     * Creates new instance with specified core pool size, maximum pool size and keep alive time
+     * @param corePoolSize                    Core pool size
+     * @param maximumPoolSize                 Maximum pool size
+     * @param keepAliveTime                   Keep alive time (in seconds)
+     */
+    public ExecutorFilter(int corePoolSize, int maximumPoolSize, long keepAliveTime) {
 		this(new ThreadPoolExecutor(corePoolSize, maximumPoolSize, keepAliveTime, TimeUnit.SECONDS, new LinkedBlockingQueue()));
 	}
@@ -81,5 +86,5 @@
 	/**
 	 * Returns the underlying {@link Executor} instance this filter uses.
-     * @return
+     * @return             Executor object
      */
 	public Executor getExecutor() {
@@ -87,5 +92,12 @@
 	}
 
-	private void fireEvent(NextFilter nextFilter, IoSession session,
+    /**
+     * Dispatches event to next filter
+     * @param nextFilter          Next filter
+     * @param session             IoSession object
+     * @param type                Event type (opened, closed, read, written, etc)
+     * @param data                Data
+     */
+    private void fireEvent(NextFilter nextFilter, IoSession session,
 			EventType type, Object data) {
 		Event event = new Event(type, nextFilter, data);
@@ -106,9 +118,20 @@
 	}
 
-	private static class SessionBuffer {
-		private static final String KEY = SessionBuffer.class.getName()
+    /**
+     * Holds sessions
+     */
+    private static class SessionBuffer {
+        /**
+         * Key
+         */
+        private static final String KEY = SessionBuffer.class.getName()
 				+ ".KEY";
 
-		private static SessionBuffer getSessionBuffer(IoSession session) {
+        /**
+         * Creates session buffer from I/O session (connection)
+         * @param session            Connection between two ends
+         * @return                   Session buffer
+         */
+        private static SessionBuffer getSessionBuffer(IoSession session) {
 			synchronized (session) {
 				SessionBuffer buf = (SessionBuffer) session.getAttribute(KEY);
@@ -121,10 +144,21 @@
 		}
 
+        /**
+         * MINA session
+         */
 		private final IoSession session;
-
+        /**
+         * Event queue
+         */
 		private final List eventQueue = new ArrayList();
-
+        /**
+         * Whether there's more events to process
+         */
 		private boolean processingCompleted = true;
 
+        /**
+         * Session buffer
+         * @param session             I/O session
+         */
 		private SessionBuffer(IoSession session) {
 			this.session = session;
@@ -132,24 +166,58 @@
 	}
 
+    /**
+     * Type of event
+     */
 	protected static class EventType {
-		public static final EventType OPENED = new EventType("OPENED");
-
-		public static final EventType CLOSED = new EventType("CLOSED");
-
-		public static final EventType READ = new EventType("READ");
-
-		public static final EventType WRITTEN = new EventType("WRITTEN");
-
-		public static final EventType RECEIVED = new EventType("RECEIVED");
-
-		public static final EventType SENT = new EventType("SENT");
-
-		public static final EventType IDLE = new EventType("IDLE");
-
-		public static final EventType EXCEPTION = new EventType("EXCEPTION");
-
-		private final String value;
-
-		private EventType(String value) {
+        /**
+         * On connection opened
+         */
+ 

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