Interface Invocable

All Known Subinterfaces:
Callback, Callback.InvocableCallback
All Known Implementing Classes:
AbstractConnection.ReadCallback, Callback.Completable, Callback.Completing, Callback.Nested, ChannelEndPoint.RunnableCloseable, ChannelEndPoint.RunnableTask, CompletableCallback, CountingCallback, DeferredContentProvider, DeferredContentProvider.DeferredContentProviderIterator, FutureCallback, GzipHttpOutputInterceptor.GzipBufferCB, HttpChannel.Send100Callback, HttpChannel.SendCallback, HttpConnection.AsyncReadCallback, HttpConnection.BlockingReadCallback, HttpConnection.Content, HttpConnection.SendCallback, HttpContent, HttpDestination, HttpDestinationOverHTTP, HttpInput.Content, HttpInput.EofContent, HttpInput.SentinelContent, HttpOutput.AsyncFlush, HttpOutput.AsyncWrite, HttpOutput.ChannelWriteCB, HttpOutput.InputStreamWritingCB, HttpOutput.NestedChannelWriteCB, HttpOutput.ReadableByteChannelWritingCB, HttpOutput.WriteCompleteCB, HttpSender.CommitCallback, HttpSender.ContentCallback, HttpSender.LastCallback, HttpSenderOverHTTP.ByteBufferRecyclerCallback, HttpSenderOverHTTP.HeadersCallback, InputStreamContentProvider, IteratingCallback, IteratingNestedCallback, MultiPartContentProvider.MultiPartIterator, MultiplexHttpDestination, OutputStreamContentProvider, PoolingHttpDestination, ProxyProtocolClientConnectionFactory.ProxyProtocolConnection, ProxyProtocolClientConnectionFactory.ProxyProtocolConnectionV1, ProxyProtocolClientConnectionFactory.ProxyProtocolConnectionV2, SharedBlockingCallback.Blocker, Socks4Proxy.Socks4ProxyConnection, SslConnection.DecryptedEndPoint.IncompleteWriteCallback, SslConnection.RunnableTask

public interface Invocable

A task (typically either a Runnable or 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.

  • Field Details

  • Method Details

    • 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

      static void invokeNonBlocking(Runnable task)
      Invoke a task with the calling thread, tagged to indicate that it will not block.
      Parameters:
      task - The task to invoke.
    • combine

    • getInvocationType

      static Invocable.InvocationType getInvocationType(Object o)
      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, otherwise Invocable.InvocationType.BLOCKING is returned.
    • getInvocationType

      default Invocable.InvocationType getInvocationType()
      Returns:
      The InvocationType of this object