Class AbstractHttpTransport

java.lang.Object
All Implemented Interfaces:
ServerTransport, org.cometd.bayeux.Transport, org.eclipse.jetty.util.component.Dumpable
Direct Known Subclasses:
AbstractStreamHttpTransport, AsyncJSONTransport

public abstract class AbstractHttpTransport
extends AbstractServerTransport

HTTP ServerTransport base class, used by ServerTransports that use HTTP as transport or to initiate a transport connection.

  • Field Details

    • PREFIX

      public static final java.lang.String PREFIX
      See Also:
      Constant Field Values
    • JSON_DEBUG_OPTION

      public static final java.lang.String JSON_DEBUG_OPTION
      See Also:
      Constant Field Values
    • MESSAGE_PARAM

      public static final java.lang.String MESSAGE_PARAM
      See Also:
      Constant Field Values
    • MAX_SESSIONS_PER_BROWSER_OPTION

      public static final java.lang.String MAX_SESSIONS_PER_BROWSER_OPTION
      See Also:
      Constant Field Values
    • HTTP2_MAX_SESSIONS_PER_BROWSER_OPTION

      public static final java.lang.String HTTP2_MAX_SESSIONS_PER_BROWSER_OPTION
      See Also:
      Constant Field Values
    • MULTI_SESSION_INTERVAL_OPTION

      public static final java.lang.String MULTI_SESSION_INTERVAL_OPTION
      See Also:
      Constant Field Values
    • TRUST_CLIENT_SESSION_OPTION

      public static final java.lang.String TRUST_CLIENT_SESSION_OPTION
      See Also:
      Constant Field Values
    • DUPLICATE_META_CONNECT_HTTP_RESPONSE_CODE_OPTION

      public static final java.lang.String DUPLICATE_META_CONNECT_HTTP_RESPONSE_CODE_OPTION
      See Also:
      Constant Field Values
  • Constructor Details

    • AbstractHttpTransport

      protected AbstractHttpTransport​(BayeuxServerImpl bayeux, java.lang.String name)
  • Method Details

    • init

      public void init()
      Description copied from class: AbstractServerTransport
      Initializes the transport, resolving default and direct options.
      Overrides:
      init in class AbstractServerTransport
    • getMultiSessionInterval

      protected long getMultiSessionInterval()
    • getDuplicateMetaConnectHttpResponseCode

      protected int getDuplicateMetaConnectHttpResponseCode()
    • accept

      public abstract boolean accept​(javax.servlet.http.HttpServletRequest request)
    • handle

      public abstract void handle​(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response) throws java.io.IOException, javax.servlet.ServletException
      Throws:
      java.io.IOException
      javax.servlet.ServletException
    • suspend

      protected abstract AbstractHttpTransport.HttpScheduler suspend​(AbstractHttpTransport.Context context, org.cometd.bayeux.Promise<java.lang.Void> promise, ServerMessage.Mutable message, long timeout)
    • write

      protected abstract void write​(AbstractHttpTransport.Context context, java.util.List<ServerMessage> messages, org.cometd.bayeux.Promise<java.lang.Void> promise)
    • processMessages

      protected void processMessages​(AbstractHttpTransport.Context context, java.util.List<ServerMessage.Mutable> messages, org.cometd.bayeux.Promise<java.lang.Void> promise)
    • findSession

      protected ServerSessionImpl findSession​(java.util.Collection<ServerSessionImpl> sessions, ServerMessage.Mutable message)
    • findCurrentSessions

      protected java.util.Collection<ServerSessionImpl> findCurrentSessions​(javax.servlet.http.HttpServletRequest request)
    • isHTTP2

      protected boolean isHTTP2​(javax.servlet.http.HttpServletRequest request)
    • flush

      protected void flush​(AbstractHttpTransport.Context context, org.cometd.bayeux.Promise<java.lang.Void> promise)
    • resume

      protected void resume​(AbstractHttpTransport.Context context, ServerMessage.Mutable message, org.cometd.bayeux.Promise<java.lang.Void> promise)
    • sendError

      protected void sendError​(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response, int code, java.lang.Throwable failure)
    • findBrowserId

      protected java.lang.String findBrowserId​(AbstractHttpTransport.Context context)
    • setBrowserId

      protected java.lang.String setBrowserId​(AbstractHttpTransport.Context context)
    • incBrowserId

      protected boolean incBrowserId​(ServerSessionImpl session, boolean http2)
      Increments the count of sessions for the given browser identifier.
      Parameters:
      session - the session that increments the count
      http2 - whether the HTTP protocol is HTTP/2
      Returns:
      true if the count is below the max sessions per browser value. If false is returned, the count is not incremented.
      See Also:
      decBrowserId(ServerSessionImpl, boolean)
    • decBrowserId

      protected void decBrowserId​(ServerSessionImpl session, boolean http2)
    • handleJSONParseException

      protected void handleJSONParseException​(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response, java.lang.String json, java.lang.Throwable failure) throws java.io.IOException
      Throws:
      java.io.IOException
    • handleMessage

      protected void handleMessage​(AbstractHttpTransport.Context context, ServerMessage.Mutable message, org.cometd.bayeux.Promise<ServerMessage.Mutable> promise)
    • getAsyncContext

      protected javax.servlet.AsyncContext getAsyncContext​(javax.servlet.http.HttpServletRequest request)
    • sweep

      protected void sweep()
      Sweeps the transport for old Browser IDs
      Overrides:
      sweep in class AbstractServerTransport
    • toJSONBytes

      protected byte[] toJSONBytes​(ServerMessage msg)