Package org.cometd.server.transport
Class AbstractHttpTransport
- java.lang.Object
-
- org.cometd.common.AbstractTransport
-
- org.cometd.server.AbstractServerTransport
-
- org.cometd.server.transport.AbstractHttpTransport
-
- All Implemented Interfaces:
org.cometd.bayeux.server.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.
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static interfaceAbstractHttpTransport.HttpSchedulerprotected classAbstractHttpTransport.LongPollScheduler-
Nested classes/interfaces inherited from class org.cometd.server.AbstractServerTransport
AbstractServerTransport.Scheduler
-
-
Field Summary
Fields Modifier and Type Field Description protected org.slf4j.Logger_loggerstatic java.lang.StringBROWSER_COOKIE_DOMAIN_OPTIONstatic java.lang.StringBROWSER_COOKIE_HTTP_ONLY_OPTIONstatic java.lang.StringBROWSER_COOKIE_NAME_OPTIONstatic java.lang.StringBROWSER_COOKIE_PATH_OPTIONstatic java.lang.StringBROWSER_COOKIE_SECURE_OPTIONstatic java.lang.StringHTTP2_MAX_SESSIONS_PER_BROWSER_OPTIONstatic java.lang.StringJSON_DEBUG_OPTIONstatic java.lang.StringMAX_SESSIONS_PER_BROWSER_OPTIONstatic java.lang.StringMESSAGE_PARAMstatic java.lang.StringMULTI_SESSION_INTERVAL_OPTIONstatic java.lang.StringPREFIXstatic java.lang.StringTRUST_CLIENT_SESSION-
Fields inherited from class org.cometd.server.AbstractServerTransport
ALLOW_MESSAGE_DELIVERY_DURING_HANDSHAKE, HANDSHAKE_RECONNECT_OPTION, INTERVAL_OPTION, JSON_CONTEXT_OPTION, MAX_INTERVAL_OPTION, MAX_LAZY_TIMEOUT_OPTION, MAX_MESSAGE_SIZE_OPTION, MAX_PROCESSING_OPTION, MAX_QUEUE_OPTION, META_CONNECT_DELIVERY_OPTION, TIMEOUT_OPTION
-
-
Constructor Summary
Constructors Modifier Constructor Description protectedAbstractHttpTransport(BayeuxServerImpl bayeux, java.lang.String name)
-
Method Summary
All Methods Instance Methods Abstract Methods Concrete Methods Modifier and Type Method Description abstract booleanaccept(javax.servlet.http.HttpServletRequest request)protected org.cometd.bayeux.server.ServerMessage.MutablebayeuxServerHandle(ServerSessionImpl session, org.cometd.bayeux.server.ServerMessage.Mutable message)protected voiddecBrowserId(ServerSessionImpl session, boolean http2)protected voiderror(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response, javax.servlet.AsyncContext asyncContext, int responseCode)protected java.lang.StringfindBrowserId(javax.servlet.http.HttpServletRequest request)protected java.util.Collection<ServerSessionImpl>findCurrentSessions(javax.servlet.http.HttpServletRequest request)protected ServerSessionImplfindSession(java.util.Collection<ServerSessionImpl> sessions, org.cometd.bayeux.server.ServerMessage.Mutable message)protected voidflush(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response, ServerSessionImpl session, boolean sendQueue, boolean scheduleExpiration, org.cometd.bayeux.server.ServerMessage.Mutable... replies)protected javax.servlet.AsyncContextgetAsyncContext(javax.servlet.http.HttpServletRequest request)org.cometd.bayeux.server.BayeuxContextgetContext()javax.servlet.http.HttpServletRequestgetCurrentRequest()protected longgetMultiSessionInterval()abstract voidhandle(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response)protected voidhandleJSONParseException(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response, java.lang.String json, java.lang.Throwable exception)protected booleanincBrowserId(ServerSessionImpl session, boolean http2)Increments the count of sessions for the given browser identifier.voidinit()Initializes the transport, resolving default and direct options.protected booleanisHTTP2(javax.servlet.http.HttpServletRequest request)protected voidmetaConnectResumed(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response, javax.servlet.AsyncContext asyncContext, org.cometd.bayeux.server.ServerSession session)protected voidmetaConnectSuspended(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response, javax.servlet.AsyncContext asyncContext, org.cometd.bayeux.server.ServerSession session)protected voidprocessMessages(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response, org.cometd.bayeux.server.ServerMessage.Mutable[] messages)protected org.cometd.bayeux.server.ServerMessage.MutableprocessMetaConnect(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response, ServerSessionImpl session, org.cometd.bayeux.server.ServerMessage.Mutable message, boolean canSuspend)protected org.cometd.bayeux.server.ServerMessage.MutableprocessMetaHandshake(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response, ServerSessionImpl session, org.cometd.bayeux.server.ServerMessage.Mutable message)protected voidresume(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response, javax.servlet.AsyncContext asyncContext, ServerSessionImpl session, org.cometd.bayeux.server.ServerMessage.Mutable reply)protected java.lang.StringsetBrowserId(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response)voidsetCurrentRequest(javax.servlet.http.HttpServletRequest request)protected abstract AbstractHttpTransport.HttpSchedulersuspend(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response, ServerSessionImpl session, org.cometd.bayeux.server.ServerMessage.Mutable reply, long timeout)protected voidsweep()Sweeps the transport for old Browser IDsprotected abstract voidwrite(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response, ServerSessionImpl session, boolean scheduleExpiration, java.util.List<org.cometd.bayeux.server.ServerMessage> messages, org.cometd.bayeux.server.ServerMessage.Mutable[] replies)-
Methods inherited from class org.cometd.server.AbstractServerTransport
allowMessageDeliveryDuringHandshake, destroy, dump, dump, getAdvice, getBayeux, getInterval, getMaxInterval, getMaxLazyTimeout, getMaxMessageSize, getTimeout, isAllowMessageDeliveryDuringHandshake, isHandshakeReconnect, isMetaConnectDeliveryOnly, parseMessages, parseMessages, processReply, scheduleExpiration, setAllowMessageDeliveryDuringHandshake, setHandshakeReconnect, setInterval, setMaxInterval, setMaxLazyTimeout, setMaxMessageSize, setMetaConnectDeliveryOnly, setTimeout, toJSONBytes, toString
-
Methods inherited from class org.cometd.common.AbstractTransport
getName, getOption, getOption, getOption, getOption, getOption, getOptionNames, getOptionPrefix, setOption, setOptionPrefix
-
-
-
-
Field Detail
-
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
-
BROWSER_COOKIE_NAME_OPTION
public static final java.lang.String BROWSER_COOKIE_NAME_OPTION
- See Also:
- Constant Field Values
-
BROWSER_COOKIE_DOMAIN_OPTION
public static final java.lang.String BROWSER_COOKIE_DOMAIN_OPTION
- See Also:
- Constant Field Values
-
BROWSER_COOKIE_PATH_OPTION
public static final java.lang.String BROWSER_COOKIE_PATH_OPTION
- See Also:
- Constant Field Values
-
BROWSER_COOKIE_SECURE_OPTION
public static final java.lang.String BROWSER_COOKIE_SECURE_OPTION
- See Also:
- Constant Field Values
-
BROWSER_COOKIE_HTTP_ONLY_OPTION
public static final java.lang.String BROWSER_COOKIE_HTTP_ONLY_OPTION
- 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
public static final java.lang.String TRUST_CLIENT_SESSION
- See Also:
- Constant Field Values
-
_logger
protected final org.slf4j.Logger _logger
-
-
Constructor Detail
-
AbstractHttpTransport
protected AbstractHttpTransport(BayeuxServerImpl bayeux, java.lang.String name)
-
-
Method Detail
-
init
public void init()
Description copied from class:AbstractServerTransportInitializes the transport, resolving default and direct options.- Overrides:
initin classAbstractServerTransport
-
getMultiSessionInterval
protected long getMultiSessionInterval()
-
setCurrentRequest
public void setCurrentRequest(javax.servlet.http.HttpServletRequest request)
-
getCurrentRequest
public javax.servlet.http.HttpServletRequest getCurrentRequest()
-
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.IOExceptionjavax.servlet.ServletException
-
suspend
protected abstract AbstractHttpTransport.HttpScheduler suspend(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response, ServerSessionImpl session, org.cometd.bayeux.server.ServerMessage.Mutable reply, long timeout)
-
write
protected abstract void write(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response, ServerSessionImpl session, boolean scheduleExpiration, java.util.List<org.cometd.bayeux.server.ServerMessage> messages, org.cometd.bayeux.server.ServerMessage.Mutable[] replies)
-
processMessages
protected void processMessages(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response, org.cometd.bayeux.server.ServerMessage.Mutable[] messages) throws java.io.IOException- Throws:
java.io.IOException
-
findSession
protected ServerSessionImpl findSession(java.util.Collection<ServerSessionImpl> sessions, org.cometd.bayeux.server.ServerMessage.Mutable message)
-
findCurrentSessions
protected java.util.Collection<ServerSessionImpl> findCurrentSessions(javax.servlet.http.HttpServletRequest request)
-
processMetaHandshake
protected org.cometd.bayeux.server.ServerMessage.Mutable processMetaHandshake(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response, ServerSessionImpl session, org.cometd.bayeux.server.ServerMessage.Mutable message)
-
processMetaConnect
protected org.cometd.bayeux.server.ServerMessage.Mutable processMetaConnect(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response, ServerSessionImpl session, org.cometd.bayeux.server.ServerMessage.Mutable message, boolean canSuspend)
-
isHTTP2
protected boolean isHTTP2(javax.servlet.http.HttpServletRequest request)
-
flush
protected void flush(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response, ServerSessionImpl session, boolean sendQueue, boolean scheduleExpiration, org.cometd.bayeux.server.ServerMessage.Mutable... replies)
-
resume
protected void resume(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response, javax.servlet.AsyncContext asyncContext, ServerSessionImpl session, org.cometd.bayeux.server.ServerMessage.Mutable reply)
-
getContext
public org.cometd.bayeux.server.BayeuxContext getContext()
-
findBrowserId
protected java.lang.String findBrowserId(javax.servlet.http.HttpServletRequest request)
-
setBrowserId
protected java.lang.String setBrowserId(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response)
-
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 counthttp2- 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 exception) throws java.io.IOException- Throws:
java.io.IOException
-
getAsyncContext
protected javax.servlet.AsyncContext getAsyncContext(javax.servlet.http.HttpServletRequest request)
-
error
protected void error(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response, javax.servlet.AsyncContext asyncContext, int responseCode)
-
bayeuxServerHandle
protected org.cometd.bayeux.server.ServerMessage.Mutable bayeuxServerHandle(ServerSessionImpl session, org.cometd.bayeux.server.ServerMessage.Mutable message)
-
metaConnectSuspended
protected void metaConnectSuspended(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response, javax.servlet.AsyncContext asyncContext, org.cometd.bayeux.server.ServerSession session)
-
metaConnectResumed
protected void metaConnectResumed(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response, javax.servlet.AsyncContext asyncContext, org.cometd.bayeux.server.ServerSession session)
-
sweep
protected void sweep()
Sweeps the transport for old Browser IDs- Overrides:
sweepin classAbstractServerTransport
-
-