org.red5.server.net.rtmpt
Class RTMPTServlet

java.lang.Object
  extended by javax.servlet.GenericServlet
      extended by javax.servlet.http.HttpServlet
          extended by org.red5.server.net.rtmpt.RTMPTServlet
All Implemented Interfaces:
Serializable, javax.servlet.Servlet, javax.servlet.ServletConfig

public class RTMPTServlet
extends javax.servlet.http.HttpServlet

Servlet that handles all RTMPT requests.

Author:
The Red5 Project ([email protected]), Joachim Bauch ([email protected]), Paul Gregoire ([email protected])
See Also:
Serialized Form

Nested Class Summary
protected  class RTMPTServlet.RequestInfo
          Used to store request information per thread.
 
Field Summary
protected  WebApplicationContext appCtx
          Web app context
protected static Logger log
          Logger
protected  ThreadLocal<RTMPTServlet.RequestInfo> requestInfo
          Thread local for request info storage
 
Constructor Summary
RTMPTServlet()
           
 
Method Summary
protected  RTMPTConnection createConnection()
          Creates an RTMPT connection.
 void destroy()
          
protected  RTMPTConnection getConnection()
          Returns a connection based on the current client session id.
protected  void handleBadRequest(String message, javax.servlet.http.HttpServletResponse resp)
          Return an error message to the client.
protected  void handleClose(javax.servlet.http.HttpServletRequest req, javax.servlet.http.HttpServletResponse resp)
          Close a RTMPT session.
protected  void handleIdle(javax.servlet.http.HttpServletRequest req, javax.servlet.http.HttpServletResponse resp)
          Poll RTMPT session for updates.
protected  void handleOpen(javax.servlet.http.HttpServletRequest req, javax.servlet.http.HttpServletResponse resp)
          Start a new RTMPT session.
protected  void handleSend(javax.servlet.http.HttpServletRequest req, javax.servlet.http.HttpServletResponse resp)
          Add data for an established session.
 void init()
          
 boolean isEnforceContentTypeCheck()
           
protected  void notifyClosed(RTMPTConnection conn)
          A connection has been closed that was created by this servlet.
protected  void removeConnection(String sessionId)
           
protected  void returnMessage(byte message, javax.servlet.http.HttpServletResponse resp)
          Return a single byte to the client.
protected  void returnMessage(RTMPTConnection client, IoBuffer buffer, javax.servlet.http.HttpServletResponse resp)
          Return raw data to the client.
protected  void returnMessage(String message, javax.servlet.http.HttpServletResponse resp)
          Return a message to the client.
protected  void returnPendingMessages(RTMPTConnection client, javax.servlet.http.HttpServletResponse resp)
          Send pending messages to client.
protected  void service(javax.servlet.http.HttpServletRequest req, javax.servlet.http.HttpServletResponse resp)
          Main entry point for the servlet.
 void setEnforceContentTypeCheck(boolean enforceContentTypeCheck)
           
 void setHandler(RTMPTHandler handler)
          Set the RTMPTHandler to use in this servlet.
 void setIdent2(String ident2)
          Set the fcs/ident2 string
protected  void setRequestInfo(javax.servlet.http.HttpServletRequest req)
          Sets the request info for the current request.
 void setRtmpConnManager(IRTMPConnManager rtmpConnManager)
           
 void setTargetResponseSize(int targetResponseSize)
          Sets the target size for responses
protected  void skipData(javax.servlet.http.HttpServletRequest req)
          Skip data sent by the client.
 
Methods inherited from class javax.servlet.http.HttpServlet
doDelete, doGet, doHead, doOptions, doPost, doPut, doTrace, getLastModified, service
 
Methods inherited from class javax.servlet.GenericServlet
getInitParameter, getInitParameterNames, getServletConfig, getServletContext, getServletInfo, getServletName, init, log, log
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

log

protected static Logger log
Logger


requestInfo

protected ThreadLocal<RTMPTServlet.RequestInfo> requestInfo
Thread local for request info storage


appCtx

protected transient WebApplicationContext appCtx
Web app context

Constructor Detail

RTMPTServlet

public RTMPTServlet()
Method Detail

init

public void init()
          throws javax.servlet.ServletException

Overrides:
init in class javax.servlet.GenericServlet
Throws:
javax.servlet.ServletException

handleBadRequest

protected void handleBadRequest(String message,
                                javax.servlet.http.HttpServletResponse resp)
                         throws IOException
Return an error message to the client.

Parameters:
message - Message
resp - Servlet response
Throws:
IOException - I/O exception

returnMessage

protected void returnMessage(byte message,
                             javax.servlet.http.HttpServletResponse resp)
                      throws IOException
Return a single byte to the client.

Parameters:
message - Message
resp - Servlet response
Throws:
IOException - I/O exception

returnMessage

protected void returnMessage(String message,
                             javax.servlet.http.HttpServletResponse resp)
                      throws IOException
Return a message to the client.

Parameters:
message - Message
resp - Servlet response
Throws:
IOException - I/O exception

returnMessage

protected void returnMessage(RTMPTConnection client,
                             IoBuffer buffer,
                             javax.servlet.http.HttpServletResponse resp)
                      throws IOException
Return raw data to the client.

Parameters:
client - RTMP connection
buffer - Raw data as byte buffer
resp - Servlet response
Throws:
IOException - I/O exception

setRequestInfo

protected void setRequestInfo(javax.servlet.http.HttpServletRequest req)
Sets the request info for the current request. Request info contains the session id and request number gathered from the incoming request. The URI is in this form /[method]/[session id]/[request number] ie. /send/CAFEBEEF01/7

Parameters:
req - Servlet request

skipData

protected void skipData(javax.servlet.http.HttpServletRequest req)
                 throws IOException
Skip data sent by the client.

Parameters:
req - Servlet request
Throws:
IOException - I/O exception

returnPendingMessages

protected void returnPendingMessages(RTMPTConnection client,
                                     javax.servlet.http.HttpServletResponse resp)
Send pending messages to client.

Parameters:
client - RTMP connection
resp - Servlet response

handleOpen

protected void handleOpen(javax.servlet.http.HttpServletRequest req,
                          javax.servlet.http.HttpServletResponse resp)
                   throws IOException
Start a new RTMPT session.

Parameters:
req - Servlet request
resp - Servlet response
Throws:
IOException - I/O exception

handleClose

protected void handleClose(javax.servlet.http.HttpServletRequest req,
                           javax.servlet.http.HttpServletResponse resp)
                    throws IOException
Close a RTMPT session.

Parameters:
req - Servlet request
resp - Servlet response
Throws:
IOException - I/O exception

handleSend

protected void handleSend(javax.servlet.http.HttpServletRequest req,
                          javax.servlet.http.HttpServletResponse resp)
                   throws IOException
Add data for an established session.

Parameters:
req - Servlet request
resp - Servlet response
Throws:
IOException - I/O exception

handleIdle

protected void handleIdle(javax.servlet.http.HttpServletRequest req,
                          javax.servlet.http.HttpServletResponse resp)
                   throws IOException
Poll RTMPT session for updates.

Parameters:
req - Servlet request
resp - Servlet response
Throws:
IOException - I/O exception

service

protected void service(javax.servlet.http.HttpServletRequest req,
                       javax.servlet.http.HttpServletResponse resp)
                throws IOException
Main entry point for the servlet.

Overrides:
service in class javax.servlet.http.HttpServlet
Parameters:
req - Request object
resp - Response object
Throws:
IOException - I/O exception

destroy

public void destroy()

Specified by:
destroy in interface javax.servlet.Servlet
Overrides:
destroy in class javax.servlet.GenericServlet

notifyClosed

protected void notifyClosed(RTMPTConnection conn)
A connection has been closed that was created by this servlet.

Parameters:
conn -

getConnection

protected RTMPTConnection getConnection()
Returns a connection based on the current client session id.

Returns:
RTMPTConnection

createConnection

protected RTMPTConnection createConnection()
Creates an RTMPT connection.

Returns:
RTMPT connection

removeConnection

protected void removeConnection(String sessionId)

setRtmpConnManager

public void setRtmpConnManager(IRTMPConnManager rtmpConnManager)

setHandler

public void setHandler(RTMPTHandler handler)
Set the RTMPTHandler to use in this servlet.

Parameters:
handler - handler

setIdent2

public void setIdent2(String ident2)
Set the fcs/ident2 string

Parameters:
ident2 -

setTargetResponseSize

public void setTargetResponseSize(int targetResponseSize)
Sets the target size for responses

Parameters:
targetResponseSize - the targetResponseSize to set

isEnforceContentTypeCheck

public boolean isEnforceContentTypeCheck()
Returns:
the enforceContentTypeCheck

setEnforceContentTypeCheck

public void setEnforceContentTypeCheck(boolean enforceContentTypeCheck)
Parameters:
enforceContentTypeCheck - the enforceContentTypeCheck to set


Copyright © 2006-2012 The Red5 Project