[Red5commits] [1603] RTMP packages documentation patch

mklishin luke at codegent.com
Wed Jan 24 11:04:14 EST 2007


RTMP packages documentation patch


Timestamp: 12/26/06 10:21:22 EST (1 month ago) 
Change: 1603 
Author: mklishin

Files (see diff or trac for details): 
java/server/trunk/src/org/red5/server/net/rtmp/BaseRTMPHandler.java
java/server/trunk/src/org/red5/server/net/rtmp/Channel.java
java/server/trunk/src/org/red5/server/net/rtmp/DeferredResult.java
java/server/trunk/src/org/red5/server/net/rtmp/IRTMPHandler.java
java/server/trunk/src/org/red5/server/net/rtmp/RTMPHandler.java
java/server/trunk/src/org/red5/server/net/rtmp/RTMPMinaConnection.java
java/server/trunk/src/org/red5/server/net/rtmp/RTMPMinaIoHandler.java
java/server/trunk/src/org/red5/server/net/rtmp/RTMPUtils.java
java/server/trunk/src/org/red5/server/net/rtmp/event/Ping.java


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

Index: /java/server/trunk/src/org/red5/server/net/rtmp/DeferredResult.java
===================================================================
--- /java/server/trunk/src/org/red5/server/net/rtmp/DeferredResult.java (revision 1597)
+++ /java/server/trunk/src/org/red5/server/net/rtmp/DeferredResult.java (revision 1603)
@@ -20,10 +20,10 @@
  */
 
-import java.lang.ref.WeakReference;
-
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 import org.red5.server.api.service.IPendingServiceCall;
 import org.red5.server.net.rtmp.event.Invoke;
+
+import java.lang.ref.WeakReference;
 
 /**
@@ -34,5 +34,7 @@
  */
 public class DeferredResult {
-
+    /**
+     * Logger
+     */
 	protected static Log log = LogFactory.getLog(DeferredResult.class.getName());
 	
Index: /java/server/trunk/src/org/red5/server/net/rtmp/RTMPHandler.java
===================================================================
--- /java/server/trunk/src/org/red5/server/net/rtmp/RTMPHandler.java (revision 1597)
+++ /java/server/trunk/src/org/red5/server/net/rtmp/RTMPHandler.java (revision 1603)
@@ -20,16 +20,8 @@
  */
 
-import static org.red5.server.api.ScopeUtils.getScopeService;
-
-import java.util.HashMap;
-import java.util.Map;
-
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
-import org.red5.server.api.IContext;
-import org.red5.server.api.IGlobalScope;
-import org.red5.server.api.IScope;
-import org.red5.server.api.IScopeHandler;
-import org.red5.server.api.IServer;
+import org.red5.server.api.*;
+import static org.red5.server.api.ScopeUtils.getScopeService;
 import org.red5.server.api.service.IPendingServiceCall;
 import org.red5.server.api.service.IServiceCall;
@@ -59,16 +51,28 @@
 import org.red5.server.stream.StreamService;
 
+import java.util.HashMap;
+import java.util.Map;
+
+/**
+ * RTMP events handler
+ */
 public class RTMPHandler extends BaseRTMPHandler {
-
+    /**
+     * Logger
+     */
 	protected static Log log = LogFactory.getLog(RTMPHandler.class.getName());
-
+    /**
+     * Status object service
+     */
 	protected StatusObjectService statusObjectService;
-
+    /**
+     * Red5 server instance
+     */
 	protected IServer server;
 
 	/**
-     * Setter for property 'server'.
+     * Setter for server object.
      *
-     * @param server Value to set for property 'server'.
+     * @param server  Red5 server instance
      */
     public void setServer(IServer server) {
@@ -77,7 +81,7 @@
 
 	/**
-     * Setter for property 'statusObjectService'.
+     * Setter for status object service.
      *
-     * @param statusObjectService Value to set for property 'statusObjectService'.
+     * @param statusObjectService Status object service.
      */
     public void setStatusObjectService(StatusObjectService statusObjectService) {
@@ -114,5 +118,10 @@
 	}
 
-	protected void invokeCall(RTMPConnection conn, IServiceCall call) {
+    /**
+     * Remoting call invocation handler
+     * @param conn             RTMP connection
+     * @param call             Service call
+     */
+    protected void invokeCall(RTMPConnection conn, IServiceCall call) {
 		final IScope scope = conn.getScope();
 		if (scope.hasHandler()) {
@@ -135,5 +144,11 @@
 	}
 
-	private void invokeCall(RTMPConnection conn, IServiceCall call,
+    /**
+     * Remoting call invocation handler
+     * @param conn             RTMP connection
+     * @param call             Service call
+     * @param service          Server-side service object
+     */
+    private void invokeCall(RTMPConnection conn, IServiceCall call,
 			Object service) {
 		final IScope scope = conn.getScope();
Index: /java/server/trunk/src/org/red5/server/net/rtmp/event/Ping.java
===================================================================
--- /java/server/trunk/src/org/red5/server/net/rtmp/event/Ping.java (revision 1597)
+++ /java/server/trunk/src/org/red5/server/net/rtmp/event/Ping.java (revision 1603)
@@ -21,5 +21,5 @@
 
 /**
- * Ping even, actually combination of different events
+ * Ping event, actually combination of different events
  */
 public class Ping extends BaseEvent {
Index: /java/server/trunk/src/org/red5/server/net/rtmp/RTMPUtils.java
===================================================================
--- /java/server/trunk/src/org/red5/server/net/rtmp/RTMPUtils.java (revision 1406)
+++ /java/server/trunk/src/org/red5/server/net/rtmp/RTMPUtils.java (revision 1603)
@@ -24,10 +24,14 @@
 
 /**
- *
+ * RTMP utilities class
  * @author The Red5 Project (red5 at osflash.org)
  * @author Luke Hubbard, Codegent Ltd (luke at codegent.com)
  */
 public class RTMPUtils implements Constants {
-
+    /**
+     * 
+     * @param out
+     * @param value
+     */
 	public static void writeReverseIntOld(ByteBuffer out, int value) {
 		byte[] bytes = new byte[4];
@@ -43,4 +47,9 @@
 	}
 
+    /**
+     *
+     * @param out
+     * @param value
+     */
 	public static void writeReverseInt(ByteBuffer out, int value) {
 		byte[] bytes = new byte[4];
@@ -52,4 +61,9 @@
 	}
 
+    /**
+     *
+     * @param out
+     * @param value
+     */
 	public static void writeMediumInt(ByteBuffer out, int value) {
 		byte[] bytes = new byte[3];
@@ -60,4 +74,9 @@
 	}
 
+    /**
+     *
+     * @param in
+     * @return
+     */
 	public static int readUnsignedMediumInt(ByteBuffer in) {
 		byte[] bytes = new byte[3];
@@ -83,4 +102,9 @@
 	}
 
+    /**
+     *
+     * @param in
+     * @return
+     */
 	public static int readUnsignedMediumIntOld(ByteBuffer in) {
 		byte[] bytes = new byte[3];
@@ -93,4 +117,9 @@
 	}
 
+    /**
+     *
+     * @param in
+     * @return
+     */
 	public static int readMediumIntOld(ByteBuffer in) {
 		ByteBuffer buf = ByteBuffer.allocate(4);
@@ -105,4 +134,9 @@
 	}
 
+    /**
+     *
+     * @param in
+     * @return
+     */
 	public static int readMediumInt(ByteBuffer in) {
 		byte[] bytes = new byte[3];
@@ -128,4 +162,9 @@
 	}
 
+    /**
+     *
+     * @param in
+     * @return
+     */
 	public static int readReverseInt(ByteBuffer in) {
 		byte[] bytes = new byte[4];
@@ -139,4 +178,9 @@
 	}
 
+    /**
+     *
+     * @param in
+     * @return
+     */
 	public static int readReverseIntOld(ByteBuffer in) {
 		byte[] bytes = new byte[4];
@@ -150,13 +194,29 @@
 	}
 
+    /**
+     *
+     * @param headerSize
+     * @param channelId
+     * @return
+     */
 	public static byte encodeHeaderByte(byte headerSize, byte channelId) {
 		return (byte) ((headerSize << 6) + channelId);
 	}
 
+    /**
+     *
+     * @param header
+     * @return
+     */
 	public static byte decodeChannelId(byte header) {
 		return (byte) (header & 0x3f);
 	}
 
-	public static byte decodeHeaderSize(byte header) {
+    /**
+     *
+     * @param header
+     * @return
+     */
+    public static byte decodeHeaderSize(byte header) {
 		int headerInt = (header >= 0) ? header : header + 256;
 		byte size = (byte) (headerInt >> 6);
@@ -164,5 +224,10 @@
 	}
 
-	public static int getHeaderLength(byte headerSize) {
+    /**
+     * 
+     * @param headerSize
+     * @return
+     */
+    public static int getHeaderLength(byte headerSize) {
 		switch (headerSize) {
 			case HEADER_NEW:
Index: /java/server/trunk/src/org/red5/server/net/rtmp/RTMPMinaConnection.java
===================================================================
--- /java/server/trunk/src/org/red5/server/net/rtmp/RTMPMinaConnection.java (revision 1597)
+++ /java/server/trunk/src/org/red5/server/net/rtmp/RTMPMinaConnection.java (revision 1603)
@@ -20,7 +20,4 @@
  */
 
-import java.net.InetSocketAddress;
-import java.net.SocketAddress;
-
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
@@ -29,10 +26,18 @@
 import org.red5.server.net.rtmp.message.Packet;
 
+import java.net.InetSocketAddress;
+import java.net.SocketAddress;
+
 public class RTMPMinaConnection extends RTMPConnection {
-
+    /**
+     * Logger
+     */
 	protected static Log log = LogFactory.getLog(RTMPMinaConnection.class
 			.getName());
 
-	private IoSession ioSession;
+    /**
+     * MINA I/O session, connection between two endpoints
+     */
+    private IoSession ioSession;
 
 	/** Constructs a new RTMPMinaConnection. */
@@ -42,7 +47,7 @@
 
 	/**
-     * Setter for property 'ioSession'.
+     * Setter for MINA I/O session (connection)
      *
-     * @param protocolSession Value to set for property 'ioSession'.
+     * @param protocolSession  Protocol session
      */
     void setIoSession(IoSession protocolSession) {
@@ -60,7 +65,7 @@
 	
 	/**
-     * Getter for property 'ioSession'.
+     * Return MINA I/O session
      *
-     * @return Value for property 'ioSession'.
+     * @return MINA O/I session, connection between two endpoints
      */
     public IoSession getIoSession() {
Index: /java/server/trunk/src/org/red5/server/net/rtmp/Channel.java
===================================================================
--- /java/server/trunk/src/org/red5/server/net/rtmp/Channel.java (revision 1597)
+++ /java/server/trunk/src/org/red5/server/net/rtmp/Channel.java (revision 1603)
@@ -46,10 +46,10 @@
      * RTMP connection used to transfer packets
      */
-	private RTMPConnection connection = null;
+	private RTMPConnection connection;
 
     /**
      * Channel id
      */
-    private byte id = 0;
+    private byte id;
 
 	//private Stream stream;
@@ -72,7 +72,7 @@
 
 	/**
-     * Getter for property 'id'.
+     * Getter for id.
      *
-     * @return Value for property 'id'.
+     * @return  Channel ID
      */
     public byte getId() {
@@ -81,5 +81,5 @@
 	
 	/**
-     * Getter for  RTMP connection.
+     * Getter for RTMP connection.
      *
      * @return  RTMP connection
@@ -146,9 +146,8 @@
 			invoke.setCall(call);
 		} else {
-			final Call call = new Call(null, "onStatus",
-					new Object[] { status });
+			final Call call = new Call(null, "onStatus", new Object[] { status });
 			invoke = (Invoke) new Notify();
 			invoke.setInvokeId(1);
-			((Notify) invoke).setCall(call);
+			invoke.setCall(call);
 		}
 		// We send directly to the corresponding stream as for
Index: /java/server/trunk/src/org/red5/server/net/rtmp/IRTMPHandler.java
===================================================================
--- /java/server/trunk/src/org/red5/server/net/rtmp/IRTMPHandler.java (revision 1530)
+++ /java/server/trunk/src/org/red5/server/net/rtmp/IRTMPHandler.java (revision 1603)
@@ -23,12 +23,36 @@
 import org.red5.server.net.rtmp.codec.RTMP;
 
+/**
+ * RTMP events handler
+ */
 public interface IRTMPHandler {
-	
+    /**
+     * Connection open event
+     * @param conn          Connection
+     * @param state         RTMP state
+     */
 	public void connectionOpened(RTMPConnection conn, RTMP state);
-	
+
+    /**
+     * Message recieved
+     * @param conn          Connection
+     * @param state         RTMP state
+     * @param message       Message
+     * @throws Exception    Exception
+     */
 	public void messageReceived(RTMPConnection conn, ProtocolState state, Object message) throws Exception;
-	
+
+    /**
+     * Message sent
+     * @param conn          Connection
+     * @param message       Message
+     */
 	public void messageSent(RTMPConnection conn, Object message);
-	
+
+    /**
+     * Connection closed
+     * @param conn          Connection
+     * @param state         RTMP state
+     */
 	public void connectionClosed(RTMPConnection conn, RTMP state);
 	
Index: /java/server/trunk/src/org/red5/server/net/rtmp/BaseRTMPHandler.java
===================================================================
--- /java/server/trunk/src/org/red5/server/net/rtmp/BaseRTMPHandler.java (revision 1597)
+++ /java/server/trunk/src/org/red5/server/net/rtmp/BaseRTMPHandler.java (revision 1603)
@@ -19,8 +19,4 @@
  * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 
  */
-
-import java.util.HashSet;
-import java.util.Iterator;
-import java.util.Set;
 
 import org.apache.commons.logging.Log;
@@ -35,11 +31,5 @@
 import org.red5.server.net.protocol.ProtocolState;
 import org.red5.server.net.rtmp.codec.RTMP;
-import org.red5.server.net.rtmp.event.BytesRead;
-import org.red5.server.net.rtmp.event.ChunkSize;
-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.Unknown;
+import org.red5.server.net.rtmp.event.*;
 import org.red5.server.net.rtmp.message.Constants;
 import org.red5.server.net.rtmp.message.Header;
@@ -49,4 +39,7 @@
 import org.red5.server.stream.PlaylistSubscriberStream;
 
+import java.util.HashSet;
+import java.util.Set;
+
 /**
  * Base class for all RTMP handlers.
@@ -55,5 +48,7 @@
  */
 public abstract class BaseRTMPHandler implements IRTMPHandler, Constants, StatusCodes {
-
+    /**
+     * Logger
+     */
 	protected static Log log = LogFactory.getLog(BaseRTMPHandler.class.getName());
 
@@ -62,7 +57,7 @@
 
 	/**
-     * Getter for property 'streamId'.
+     * Getter for stream ID.
      *
-     * @return Value for property 'streamId'.
+     * @return  Stream ID
      */ // XXX: HACK HACK HACK to support stream ids
 	public static int getStreamId() {
@@ -71,7 +66,7 @@
 
 	/**
-     * Setter for property 'streamId'.
+     * Setter for stream Id.
      *
-     * @param id Value to set for property 'streamId'.
+     * @param id  Stream id
      */
     private static void setStreamId(int id) {
@@ -85,6 +80,5 @@
 
 	/** {@inheritDoc} */
-    public void messageReceived(RTMPConnection conn, ProtocolState state,
-			Object in) throws Exception {
+    public void messageReceived(RTMPConnection conn, ProtocolState state, Object in) throws Exception {
 
 		IRTMPEvent message = null;
@@ -208,4 +202,9 @@
 	}
 
+    /**
+     * Return hostname for URL
+     * @param url          URL
+     * @return             Hostname from that URL
+     */
 	protected String getHostname(String url) {
 		if (log.isDebugEnabled()) {
@@ -221,8 +220,20 @@
 	}
 
-	protected abstract void onChunkSize(RTMPConnection conn, Channel channel,
-			Header source, ChunkSize chunkSize);
-
-	protected void handlePendingCallResult(RTMPConnection conn, Notify invoke) {
+    /**
+     * Chunk size change event handler. Abstract, to be implemented in subclasses.
+     * @param conn         Connection
+     * @param channel      Channel
+     * @param source       Header
+     * @param chunkSize    New chunk size
+     */
+    protected abstract void onChunkSize(RTMPConnection conn, Channel channel,
+                                        Header source, ChunkSize chunkSize);
+
+    /**
+     * Handler for pending call result. Dispatches results to all pending call handlers.
+     * @param conn         Connection
+     * @param invoke       Pending call result event context
+     */
+    protected void handlePendingCallResult(RTMPConnection conn, Notify invoke) {
 		final IServiceCall call = invoke.getCall();
 		final IPendingServiceCall pendingCall = conn.getPendingCall(invoke
@@ -244,29 +255,54 @@
 			HashSet<IPendingServiceCallback> tmp = new HashSet<IPendingServiceCallback>();
 			tmp.addAll(callbacks);
-			Iterator<IPendingServiceCallback> it = tmp.iterator();
-			while (it.hasNext()) {
-				IPendingServiceCallback callback = it.next();
-				try {
-					callback.resultReceived(pendingCall);
-				} catch (Exception e) {
-					log.error("Error while executing callback " + callback,
-							e);
-				}
-			}
-		}
+            for (IPendingServiceCallback callback : tmp) {
+                try {
+                    callback.resultReceived(pendingCall);
+                } catch (Exception e) {
+                    log.error("Error while executing callback " + callback, e);
+                }
+            }
+        }
 		return;
 	}
 
-	protected abstract void onInvoke(RTMPConnection conn, Channel channel,
+    /**
+     * Invocation event handler
+     * @param conn         Connection
+     * @param channel      Channel
+     * @param source       Header
+     * @param invoke       Invocation event context
+     */
+    protected abstract void onInvoke(RTMPConnection conn, Channel channel,
 			Header source, Notify invoke);
-	
+
+    /**
+     * Ping event handler
+     * @param conn         Connection
+     * @param channel      Channel
+     * @param source       Header
+     * @param ping         Ping event context
+     */
 	protected abstract void onPing(RTMPConnection conn, Channel channel,
 			Header source, Ping ping);
 
-	protected void onStreamBytesRead(RTMPConnection conn, Channel channel,
+    /**
+     * Stream bytes read event handler
+     * @param conn              Connection
+     * @param channel           Channel
+     * @param source            Header
+     * @param streamBytesRead   Bytes read event context
+     */
+    protected void onStreamBytesRead(RTMPConnection conn, Channel channel,
 			Header source, BytesRead streamBytesRead) {
 		conn.receivedBytesRead(streamBytesRead.getBytesRead());
 	}
 
+    /**
+     * Shared object event handler
+     * @param conn              Connection
+     * @param channel           Channel
+     * @param source            Header
+     * @param object            Shared object event context
+     */
 	protected abstract void onSharedObject(RTMPConnection conn, Channel channel,
 			Header source, SharedObjectMessage object);
Index: /java/server/trunk/src/org/red5/server/net/rtmp/RTMPMinaIoHandler.java
===================================================================
--- /java/server/trunk/src/org/red5/server/net/rtmp/RTMPMinaIoHandler.java (revision 1597)
+++ /java/server/trunk/src/org/red5/server/net/rtmp/RTMPMinaIoHandler.java (revision 1603)
@@ -36,19 +36,37 @@
 import org.springframework.context.ApplicationContextAware;
 
+/**
+ * Handles all RTMP protocol events fired by MINA framework
+ */
 public class RTMPMinaIoHandler extends IoHandlerAdapter
 implements ApplicationContextAware {
-
+    /**
+     * Logger
+     */
 	protected static Log log = LogFactory.getLog(RTMPMinaIoHandler.class
 			.getName());
 
-	protected IRTMPHandler handler;
-	protected boolean mode = RTMP.MODE_SERVER;
-	
+    /**
+     * RTMP events handler
+     */
+    protected IRTMPHandler handler;
+    /**
+     * Mode
+     */
+    protected boolean mode = RTMP.MODE_SERVER;
+    /**
+     * Application context
+     */
 	protected ApplicationContext appCtx;
 
-	/**
-     * Setter for property 'handler'.
+    /**
+     * RTMP protocol codec factory
+     */
+    private ProtocolCodecFactory codecFactory = null;
+
+    /**
+     * Setter for handler.
      *
-     * @param handler Value to set for property 'handler'.
+     * @param handler  RTMP events handler
      */
     public void setHandler(IRTMPHandler handler) {
@@ -57,7 +75,7 @@
 	
 	/**
-     * Setter for property 'mode'.
+     * Setter for mode.
      *
-     * @param mode Value to set for property 'mode'.
+     * @param mode     <code>true</code> if handler should work in server mode, <code>false</code> otherwise
      */
     public void setMode(boolean mode) {
@@ -65,10 +83,8 @@
 	}
 
-	private ProtocolCodecFactory codecFactory = null;
-
 	/**
-     * Setter for property 'codecFactory'.
+     * Setter for codec factory.
      *
-     * @param codecFactory Value to set for property 'codecFactory'.
+     * @param codecFactory  RTMP protocol codec factory
      */
     public void setCodecFactory(ProtocolCodecFactory codecFactory) {
@@ -102,9 +118,15 @@
 	}
 
-	private void rawBufferRecieved(ProtocolState state, ByteBuffer in,
+    /**
+     * Handle raw buffer receiving event
+     * @param state        Protocol state
+     * @param in           Data buffer
+     * @param session      I/O session, that is, connection between two endpoints
+     */
+    private void rawBufferRecieved(ProtocolState state, ByteBuffer in,
 			IoSession session) {
 
 		final RTMP rtmp = (RTMP) state;
-		if (rtmp.getMode()==RTMP.MODE_SERVER) {
+		if (rtmp.getMode() == RTMP.MODE_SERVER) {
 			if (rtmp.getState() != RTMP.STATE_HANDSHAKE) {
 				log.warn("Raw buffer after handshake, something odd going on");


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