Interface Invocable
- All Known Subinterfaces:
 Blocker.Callback, Blocker.Promise<C>, Blocker.Runnable, Callback, Callback.Completing, Handler, Handler.Collection, Handler.Container, Handler.Singleton, HandlerContainer, HttpChannel, HttpStream, Invocable.Callable, Invocable.Task, Promise.Invocable<R>, Request.Handler
- All Known Implementing Classes:
 AbstractConnection, AbstractHandler, AbstractHandlerContainer, AbstractMetaDataConnection, ALPNClientConnection, ALPNServerConnection, ArchitectureDocs.EitherTask, AsyncMiddleManServlet.ProxyReader, AsyncMiddleManServlet.ProxyReader, AsyncMiddleManServlet.ProxyReader, AsyncMiddleManServlet.ProxyResponseListener, AsyncMiddleManServlet.ProxyResponseListener, AsyncMiddleManServlet.ProxyResponseListener, AsyncMiddleManServlet.ProxyWriter, AsyncMiddleManServlet.ProxyWriter, AsyncMiddleManServlet.ProxyWriter, AsyncProxyServlet.StreamReader, AsyncProxyServlet.StreamReader, AsyncProxyServlet.StreamReader, BufferedResponseHandler, Callback.Completable, Callback.Nested, ClientQuicConnection, ConditionalHandler, ConditionalHandler.Abstract, ConditionalHandler.DontHandle, ConditionalHandler.ElseNext, ConditionalHandler.Reject, ConditionalHandler.SkipNext, ConnectHandler, ConnectHandler.DownstreamConnection, ConnectHandler.UpstreamConnection, ConstraintSecurityHandler, ContentSourceCompletableFuture, ContextHandler, ContextHandler.CoreContextHandler, ContextHandler.CoreContextHandler, ContextHandler.CoreContextRequest, ContextHandler.CoreContextRequest, ContextHandlerCollection, ContextRequest, ControlFlusher, CountingCallback, CrossOriginHandler, DebugHandler, DecoderStreamConnection, DefaultHandler, DelayedHandler, DemandingFlusher, EagerFormHandler, EncoderStreamConnection, ErrorHandler, ErrorHandler, ErrorPageErrorHandler, EventsHandler, FastCGIProxyHandler, FormFields, FutureCallback, GracefulHandler, GzipHandler, GzipResponseAndCallback, Handler.Abstract, Handler.Abstract.NonBlocking, Handler.AbstractContainer, Handler.Sequence, Handler.Wrapper, HotSwapHandler, HTTP2Connection, HTTP2Session.Entry, HTTP2Stream, HTTP3StreamConnection, HttpDestination, HttpInput.Content, HttpInput.Content, HttpInput.EofContent, HttpInput.EofContent, HttpInput.ErrorContent, HttpInput.ErrorContent, HttpInput.SpecialContent, HttpInput.SpecialContent, HttpInput.WrappingContent, HttpInput.WrappingContent, HttpSpiContextHandler, HttpStream.Wrapper, IdleTimeoutHandler, InetAccessHandler, InstructionFlusher, InstructionStreamConnection, Invocable.ReadyTask, Invocable.Task.Abstract, IteratingCallback, IteratingNestedCallback, LatencyRecordingHandler, MessageFlusher, MovedContextHandler, NegotiatingClientConnection, NegotiatingServerConnection, PathMappingsHandler, ProxyHandler, ProxyHandler.Forward, ProxyHandler.ProxyResponseListener, ProxyHandler.Reverse, ProxyProtocolClientConnectionFactory.ProxyProtocolConnection, QoSHandler, QuicConnection, ReHandlingErrorHandler, ReHandlingErrorHandler.ByHttpStatus, ResourceHandler, ResourceHandler.ResourceContext, RewriteHandler, SecuredRedirectHandler, SecurityHandler, SecurityHandler.PathMapped, SendHandlerCallback, SendHandlerCallback, SendHandlerCallback, Server, ServerDocs.JSONHTTPConnection, ServerQuicConnection, ServerWebSocketContainer, ServletContextHandler, ServletContextRequest, ServletHandler, ServletToHandlerDocs.RequestAPIs, ServletToHandlerDocs.RequestContentAPIsByteBuffer, ServletToHandlerDocs.RequestContentAPIsFormFields, ServletToHandlerDocs.RequestContentAPIsInputStream, ServletToHandlerDocs.RequestContentAPIsMultiPart, ServletToHandlerDocs.RequestContentAPIsSource, ServletToHandlerDocs.RequestContentAPIsString, ServletToHandlerDocs.ResponseAPIs, ServletToHandlerDocs.ResponseContentAPIEcho, ServletToHandlerDocs.ResponseContentAPIFlush, ServletToHandlerDocs.ResponseContentAPIsExplicit, ServletToHandlerDocs.ResponseContentAPISimpleContent, ServletToHandlerDocs.ResponseContentAPIsImplicit, ServletToHandlerDocs.ResponseContentAPIsImplicitWithStatus, ServletToHandlerDocs.ResponseContentAPIString, ServletToHandlerDocs.ResponseContentAPITrailers, SessionHandler, SessionHandler, SharedBlockingCallback.Blocker, ShutdownHandler, SizeLimitHandler, SizeLimitHandler, SslConnection, StateTrackingHandler, StatisticsHandler, StatisticsHandler.MinimumDataRateHandler, ThreadLimitHandler, TryPathsHandler, UnidirectionalStreamConnection, WebAppContext, WebSocketConnection, WebSocketUpgradeHandler, WebSocketUpgradeHandler
public interface Invocable
A task (typically either a Runnable or Invocable.Callable
that declares how it will behave when invoked:
- blocking, the invocation will certainly block (e.g. performs blocking I/O)
 - non-blocking, the invocation will certainly not block
 - either, the invocation may block
 
Static methods and are provided that allow the current thread to be tagged
with a ThreadLocal to indicate if it has a blocking invocation type.
- 
Nested Class Summary
Nested ClassesModifier and TypeInterfaceDescriptionstatic interfacestatic enumThe behavior of anInvocabletask when it is called.static classARunnabledecorated with anInvocable.InvocationType.static interfaceA task with anInvocable.InvocationType. - 
Field Summary
Fields - 
Method Summary
Modifier and TypeMethodDescriptionstatic Runnablestatic Invocable.InvocationTypeCombine two invocation type.static Invocable.InvocationTypestatic Invocable.Taskfrom(Invocable.InvocationType type, Runnable task) Creates aInvocable.Taskfrom the given InvocationType and Runnable.default Invocable.InvocationTypestatic Invocable.InvocationTypeGet the invocation type of an Object.static voidinvokeNonBlocking(Runnable task) Invoke a task with the calling thread, tagged to indicate that it will not block.static booleanTest if the current thread has been tagged as non blocking 
- 
Field Details
- 
NOOP
 - 
__nonBlocking
 
 - 
 - 
Method Details
- 
from
Creates a
Invocable.Taskfrom the given InvocationType and Runnable.- Parameters:
 type- the InvocationTypetask- the Runnable- Returns:
 - a new Task
 
 - 
isNonBlockingInvocation
static boolean isNonBlockingInvocation()Test if the current thread has been tagged as non blocking- Returns:
 - True if the task the current thread is running has indicated that it will not block.
 
 - 
invokeNonBlocking
Invoke a task with the calling thread, tagged to indicate that it will not block.- Parameters:
 task- The task to invoke.
 - 
combine
Combine two invocation type.- Parameters:
 it1- A typeit2- Another type- Returns:
 - The combination of both type, where any tendency to block overrules any non blocking.
 
 - 
combineTypes
 - 
getInvocationType
Get the invocation type of an Object.- Parameters:
 o- The object to check the invocation type of.- Returns:
 - If the object is an Invocable, it is coerced and the 
getInvocationType()used, otherwiseInvocable.InvocationType.BLOCKINGis returned. 
 - 
getInvocationType
- Returns:
 - The InvocationType of this object
 
 - 
combine
 
 -