|  | /* | 
|  | *  Licensed to the Apache Software Foundation (ASF) under one or more | 
|  | *  contributor license agreements.  See the NOTICE file distributed with | 
|  | *  this work for additional information regarding copyright ownership. | 
|  | *  The ASF licenses this file to You under the Apache License, Version 2.0 | 
|  | *  (the "License"); you may not use this file except in compliance with | 
|  | *  the License.  You may obtain a copy of the License at | 
|  | * | 
|  | *      http://www.apache.org/licenses/LICENSE-2.0 | 
|  | * | 
|  | *  Unless required by applicable law or agreed to in writing, software | 
|  | *  distributed under the License is distributed on an "AS IS" BASIS, | 
|  | *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | 
|  | *  See the License for the specific language governing permissions and | 
|  | *  limitations under the License. | 
|  | */ | 
|  |  | 
|  | package org.apache.coyote; | 
|  |  | 
|  | /** | 
|  | * ActionCodes represent callbacks from the servlet container to the coyote | 
|  | * connector. Actions are implemented by ProtocolHandler, using the ActionHook | 
|  | * interface. | 
|  | * | 
|  | * @see ProtocolHandler | 
|  | * @see ActionHook | 
|  | * @author Remy Maucherat | 
|  | */ | 
|  | public enum ActionCode { | 
|  | ACK, | 
|  | CLOSE, | 
|  | COMMIT, | 
|  |  | 
|  | /** | 
|  | * A serious error occurred from which it is not possible to recover safely. | 
|  | * Further attempts to write to the response should be ignored and the | 
|  | * connection needs to be closed as soon as possible. This can also be used | 
|  | * to forcibly close a connection if an error occurs after the response has | 
|  | * been committed. | 
|  | */ | 
|  | CLOSE_NOW, | 
|  |  | 
|  | /** | 
|  | * A flush() operation originated by the client ( i.e. a flush() on the | 
|  | * servlet output stream or writer, called by a servlet ). Argument is the | 
|  | * Response. | 
|  | */ | 
|  | CLIENT_FLUSH, | 
|  |  | 
|  | RESET, | 
|  |  | 
|  | /** | 
|  | * Has the processor been placed into the error state? Note that the | 
|  | * response may not have an appropriate error code set. | 
|  | */ | 
|  | IS_ERROR, | 
|  |  | 
|  | /** | 
|  | * Hook called if swallowing request input should be disabled. | 
|  | * Example: Cancel a large file upload. | 
|  | * | 
|  | */ | 
|  | DISABLE_SWALLOW_INPUT, | 
|  |  | 
|  | /** | 
|  | * Callback for lazy evaluation - extract the remote host address. | 
|  | */ | 
|  | REQ_HOST_ATTRIBUTE, | 
|  |  | 
|  | /** | 
|  | * Callback for lazy evaluation - extract the remote host infos (address, | 
|  | * name, port) and local address. | 
|  | */ | 
|  | REQ_HOST_ADDR_ATTRIBUTE, | 
|  |  | 
|  | /** | 
|  | * Callback for lazy evaluation - extract the SSL-related attributes. | 
|  | */ | 
|  | REQ_SSL_ATTRIBUTE, | 
|  |  | 
|  | /** | 
|  | * Callback for lazy evaluation - extract the SSL-certificate (including | 
|  | * forcing a re-handshake if necessary) | 
|  | */ | 
|  | REQ_SSL_CERTIFICATE, | 
|  |  | 
|  | /** | 
|  | * Callback for lazy evaluation - socket remote port. | 
|  | */ | 
|  | REQ_REMOTEPORT_ATTRIBUTE, | 
|  |  | 
|  | /** | 
|  | * Callback for lazy evaluation - socket local port. | 
|  | */ | 
|  | REQ_LOCALPORT_ATTRIBUTE, | 
|  |  | 
|  | /** | 
|  | * Callback for lazy evaluation - local address. | 
|  | */ | 
|  | REQ_LOCAL_ADDR_ATTRIBUTE, | 
|  |  | 
|  | /** | 
|  | * Callback for lazy evaluation - local address. | 
|  | */ | 
|  | REQ_LOCAL_NAME_ATTRIBUTE, | 
|  |  | 
|  | /** | 
|  | * Callback for setting FORM auth body replay | 
|  | */ | 
|  | REQ_SET_BODY_REPLAY, | 
|  |  | 
|  | /** | 
|  | * Callback for begin Comet processing. | 
|  | */ | 
|  | COMET_BEGIN, | 
|  |  | 
|  | /** | 
|  | * Callback for end Comet processing. | 
|  | */ | 
|  | COMET_END, | 
|  |  | 
|  | /** | 
|  | * Callback for getting the amount of available bytes. | 
|  | */ | 
|  | AVAILABLE, | 
|  |  | 
|  | /** | 
|  | * Callback for an asynchronous close of the Comet event | 
|  | */ | 
|  | COMET_CLOSE, | 
|  |  | 
|  | /** | 
|  | * Callback for setting the timeout asynchronously | 
|  | */ | 
|  | COMET_SETTIMEOUT, | 
|  |  | 
|  | /** | 
|  | * Callback to determine if the current request is a Comet request. | 
|  | */ | 
|  | IS_COMET, | 
|  |  | 
|  | /** | 
|  | * Callback for an async request. | 
|  | */ | 
|  | ASYNC_START, | 
|  |  | 
|  | /** | 
|  | * Callback for an async call to | 
|  | * {@link javax.servlet.AsyncContext#dispatch()}. | 
|  | */ | 
|  | ASYNC_DISPATCH, | 
|  |  | 
|  | /** | 
|  | * Callback to indicate the the actual dispatch has started and that the | 
|  | * async state needs change. | 
|  | */ | 
|  | ASYNC_DISPATCHED, | 
|  |  | 
|  | /** | 
|  | * Callback for an async call to | 
|  | * {@link javax.servlet.AsyncContext#start(Runnable)}. | 
|  | */ | 
|  | ASYNC_RUN, | 
|  |  | 
|  | /** | 
|  | * Callback for an async call to | 
|  | * {@link javax.servlet.AsyncContext#complete()}. | 
|  | */ | 
|  | ASYNC_COMPLETE, | 
|  |  | 
|  | /** | 
|  | * Callback to trigger the processing of an async timeout. | 
|  | */ | 
|  | ASYNC_TIMEOUT, | 
|  |  | 
|  | /** | 
|  | * Callback to trigger the error processing. | 
|  | */ | 
|  | ASYNC_ERROR, | 
|  |  | 
|  | /** | 
|  | * Callback for an async call to | 
|  | * {@link javax.servlet.AsyncContext#setTimeout(long)} | 
|  | */ | 
|  | ASYNC_SETTIMEOUT, | 
|  |  | 
|  | /** | 
|  | * Callback to determine if async processing is in progress. | 
|  | */ | 
|  | ASYNC_IS_ASYNC, | 
|  |  | 
|  | /** | 
|  | * Callback to determine if async dispatch is in progress. | 
|  | */ | 
|  | ASYNC_IS_STARTED, | 
|  |  | 
|  | /** | 
|  | * Call back to determine if async complete is in progress. | 
|  | */ | 
|  | ASYNC_IS_COMPLETING, | 
|  |  | 
|  | /** | 
|  | * Callback to determine if async dispatch is in progress. | 
|  | */ | 
|  | ASYNC_IS_DISPATCHING, | 
|  |  | 
|  | /** | 
|  | * Callback to determine if async is timing out. | 
|  | */ | 
|  | ASYNC_IS_TIMINGOUT, | 
|  |  | 
|  | /** | 
|  | * Callback to determine if async is in error. | 
|  | */ | 
|  | ASYNC_IS_ERROR, | 
|  |  | 
|  | /** | 
|  | * Callback to trigger post processing. Typically only used during error | 
|  | * handling to trigger essential processing that otherwise would be skipped. | 
|  | */ | 
|  | ASYNC_POST_PROCESS, | 
|  |  | 
|  | /** | 
|  | * Callback to trigger the HTTP upgrade process. | 
|  | */ | 
|  | UPGRADE, | 
|  |  | 
|  | /** | 
|  | * Indicator that Servlet is interested in being | 
|  | * notified when data is available to be read | 
|  | */ | 
|  | NB_READ_INTEREST, | 
|  |  | 
|  | /** | 
|  | *Indicator that the Servlet is interested | 
|  | *in being notified when it can write data | 
|  | */ | 
|  | NB_WRITE_INTEREST, | 
|  |  | 
|  | /** | 
|  | * Indicates if the request body has been fully read. | 
|  | */ | 
|  | REQUEST_BODY_FULLY_READ, | 
|  |  | 
|  | /** | 
|  | * Indicates that the container needs to trigger a call to onDataAvailable() | 
|  | * for the registered non-blocking read listener. | 
|  | */ | 
|  | DISPATCH_READ, | 
|  |  | 
|  | /** | 
|  | * Indicates that the container needs to trigger a call to onWritePossible() | 
|  | * for the registered non-blocking write listener. | 
|  | */ | 
|  | DISPATCH_WRITE, | 
|  |  | 
|  | /** | 
|  | * Execute any non-blocking dispatches that have been registered via | 
|  | * {@link #DISPATCH_READ} or {@link #DISPATCH_WRITE}. Typically required | 
|  | * when the non-blocking listeners are configured on a thread where the | 
|  | * processing wasn't triggered by a read or write event on the socket. | 
|  | */ | 
|  | DISPATCH_EXECUTE, | 
|  |  | 
|  | /** | 
|  | * Trigger end of request processing (remaining input swallowed, write any | 
|  | * remaining parts of the response etc.). | 
|  | */ | 
|  | END_REQUEST | 
|  | } |